有以下方案:
使用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个索引,费用为20s。
我发现没有" ="的查询选择索引扫描,但是,使用" =" 的查询部分选择表扫描。
根据您的问题:
-
当前的索引机制是优化器匹配第一个可用索引,这意味着查询将首先选择创建的第一个索引,并且索引的选择取决于创建索引的顺序。在索引的情况下,查询将首先进行索引扫描。
-
确保每个数据组上的节点都包含索引,否则未索引数据节点将进行表扫描。
-
执行分析优化查询。分析是SequoIADB v3.0的新功能。它主要用于分析集合,索引数据和收集统计信息,并提供最佳查询算法以确定索引或表扫描。分析特定用法参考:http://doc.sequesoiadb.com/cn/index-cat_id-1496923440-edition_id-300-300
-
查看find.explain()查看查询成本
的访问计划