1

我正在试用 QuestDb,它有Symbol 列类型。据我了解,存储很少更改的小字符串值很有用。在什么时候最好为字符串使用单独的表并使用整数键代替?我的简化架构是 2 个表:

仪器:ISIN,名称

价格:ISIN、PriceValue、日期

仪器是有限的,但随着时间的推移可以增长到 100 万条记录。我应该在价格中使用 ISIN 的符号列还是更好地创建整数工具 ID 并引用它?

4

1 回答 1

2

内部符号已经存储为单独的表。尽管表似乎在内部显示符号列的字符串值,但列存储 32 位 int。对于财务情况,ISIN 和其他代码应始终是符号。符号针对代码查找进行了优化,例如下面的一个选择一天的整个时间序列

select isin, ... from tab where isin = 'GB00BH4HKS39' and ts = '2021-01'

代码聚合:

select isin, sum(volume) from tab where ts = '2021-01'

不使用符号类型的情况是您的数据集具有太多不同的字段值。我会将“太多”量化为超过 100,000 个值。此时,必须将 String 解析为 Int 的代码的性能开始下降,反之亦然。

于 2021-01-08T15:18:03.090 回答