我听说在查询(选择等)时有不同之处。来自HDB和RDB (内存中)数据库。当我们应该使用特定于HDB的查询和特定于RDB的查询时,是否可以描述所有可能的场景,以及如何进行查询:例如,对HDB的查询示例和对RDB的相同示例?
发布于 2014-12-18 20:30:23
从我的头顶上:
分区的HDB表将有一个“虚拟”日期列。
RDB表(通常)不会有“日期”列
对于Partitioed表(http://code.kx.com/q/ref/dotq/#qind-partitioned-index),虚拟"i“列的行为有所不同
HDB表(除非存储是扁平的/序列化的)不会立即被完全拉进内存中,数据会按需读取。
将枚举HDB表中的符号列,内存中的RDB表将未枚举。
我没有真正的例子可以给出,但你只需要记住这些在查询时
发布于 2014-12-19 08:54:14
如果您使用的是普通的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子句的第一部分非常重要!:)
发布于 2016-04-14 13:30:08
到目前为止,我遇到了以下示例查询,这些查询在hdb中不起作用。
当我看到更多的信息时,我会更新这个列表
https://stackoverflow.com/questions/27546789
复制相似问题