Char vs Symbol KDB分开了splay表

时间:2014-04-18 05:05:37

标签: kdb q-lang

我在KDB数据库上创建一个新表作为parted splay(按日期分开),新表模式有一个名为CCYY的列,它有很多重复值。我不确定是否应将其保存为字符或符号。我的主要目标是使用最少的内存。

结果我应该使用哪一个?在重复的展开设置中将重复值保存为char数组或符号有什么好处/缺点?

2 个答案:

答案 0 :(得分:1)

听起来你应该使用符号。

这里有符号/枚举指南:http://www.timestored.com/kdb-guides/strings-symbols-enumeration#when-to-use引用:

  

通常,您应遵循指南:

     
      
  1. 如果该列用于where子句中的相等比较,例如   从A B中的sym中选择t - >符号
  2.   
  3. 短,经常重复的字符串 - >符号
  4.   
  5. Else Long,Non-repeated strings - >串
  6.   

答案 1 :(得分:0)

在评估是否对列使用符号时,该列的基数是关键。单个值的长度更少,并且如果有的话,更长的值可能更好地作为符号,因为它们将仅在sym文件中存储一次,但在char向量中重复。如果你压缩磁盘上的数据,那么这个考虑就没什么可说的了。

如果您的价值观足够短,请不要忘记使用.Q.j10.Q.x10.Q.j12.Q.x12的可能性。这将使用比char矢量更少的空间。并且它不依赖于sym文件,在复杂的环境中,如果您在syd文件不同步的hdbs之间复制表,则可以避免重新枚举。

如果需要考虑空间,请始终压缩磁盘上的数据。