有以下几种情况:
使用PG执行查询,如下所示:
Select count(*) from t where DATETIME >'2018-07-27 10.12.12.000000' and DATETIME < '2018-07-28 10.12.12.000000'
它返回22个索引并快速执行。
查询条件为“ =“
Select count(*) from t where DATETIME >='2018-07-27 10.12.12.000000' and DATETIME <= '2018-07-28 10.12.12.000000'
它返回22个索引,耗时20秒。
我发现不带“ =”的查询选择了索引扫描,但是带“ =” 的查询部分选择了表扫描。
答案 0 :(得分:0)
根据您的问题:
当前的索引机制是优化器匹配第一个可用索引,这意味着查询将首先选择创建的第一个索引,并且索引的选择取决于索引的创建顺序。对于索引,查询将首先进行索引扫描。
确保每个数据组上的节点都包含索引,否则未索引的数据节点将进行表扫描。
执行分析优化查询。分析是SequoiaDB v3.0的新功能。它主要用于分析集合,索引数据和收集统计信息,并提供最佳查询算法来确定索引或表扫描。分析特定的用法参考:http://doc.sequoiadb.com/cn/index-cat_id-1496923440-edition_id-300
通过find.explain()查看访问计划以查看查询费用