我听说从HDB和RDB(内存)数据库查询(选择等)时会有所不同。 当我们应该使用HDB特定查询和RDB特定查询以及如何查询时,是否有可能描述所有可能的场景:例如HDB的查询和RDB的相同示例?
答案 0 :(得分:3)
如果您正在使用vanilla rdb / hdb设置,那么这就是场景:
所以你的where子句标准是:
rdb的最佳查询始终是
select from table where time ...
因为rdb表是按时间排序的。
hdb的最佳查询始终是
从表中选择date = 2014.12.24,sym =`AAPL,time ...
因为它减少了对磁盘的搜索(只需要检查2014.12.24目录中的数据),sym是分开的,然后在sym中进行时间排序(从技术上讲,显然没有s属性)。将日期作为where子句的第一部分非常重要! :)
答案 1 :(得分:2)
脱离我的头顶:
分区的HDB表将有一个"虚拟"日期栏
RDB表(通常)没有“日期列”
虚拟" i"对于Partitioed HDB表(http://code.kx.com/q/ref/dotq/#qind-partitioned-index)
,列的行为有所不同HDB表(除非存储平面/序列化)不会立即完全插入内存,数据按需读取
将枚举HDB表中的符号列,内存中的RDB表将是未列举的
我没有给出真正的例子,但你只需要在查询时记住这些
答案 2 :(得分:0)
到目前为止,我遇到了以下在hdb中无效的示例查询。
当我遇到更多
时,我会更新此列表