我正在尝试 QuestDb,它有 Symbol column类型。 据我了解,存储很少更改的小字符串值很有用。在什么情况下最好对字符串使用单独的表并使用整数键?我的简化架构是 2 个表:
工具:ISIN、姓名
价格:ISIN、价格值、日期
仪器有限,但随着时间的推移可以增加到 100 万条记录。我应该在价格中使用 ISIN 的符号列还是更好地创建整数工具 ID 并引用它?
最佳答案
内部符号已存储为单独的表。尽管表似乎在内部列中显示符号列的字符串值 存储 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 或反之亦然的代码的性能开始 逐渐减少。
关于database-design - QuestDb 中的 Symbol 列是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65626576/