在SequoiaDB中查询时如何选择索引扫描或表扫描?

时间:2019-03-01 09:57:02

标签: database

有以下几种情况:

使用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秒。

我发现不带“ =”的查询选择了索引扫描,但是带“ =” 的查询部分选择了表扫描。

1 个答案:

答案 0 :(得分:0)

根据您的问题:

  1. 当前的索引机制是优化器匹配第一个可用索引,这意味着查询将首先选择创建的第一个索引,并且索引的选择取决于索引的创建顺序。对于索引,查询将首先进行索引扫描。

  2. 确保每个数据组上的节点都包含索引,否则未索引的数据节点将进行表扫描。

  3. 执行分析优化查询。分析是SequoiaDB v3.0的新功能。它主要用于分析集合,索引数据和收集统计信息,并提供最佳查询算法来确定索引或表扫描。分析特定的用法参考:http://doc.sequoiadb.com/cn/index-cat_id-1496923440-edition_id-300

  4. 通过find.explain()查看访问计划以查看查询费用