在SQLite中重写不同的查询

在SQLite中重写不同的查询,sql,sqlite,Sql,Sqlite,我有一个这样的查询: SELECT Distinct(ContKey) FROM Point WHERE Created > 1245750191000 AND Created < 1345753791000 AND ContainerId='abcd' 它运行得更快(不到一秒钟)。但会产生更多的结果。确切地说是72330。这是不是有点不正确?基于我正在尝试做的,我希望能够改进查询 谢谢 我确信这不是索引问题,因为我们有一个关于相关字段和字段组合的索引 换句话说,你不确定你

我有一个这样的查询:

SELECT Distinct(ContKey)
FROM Point
WHERE Created > 1245750191000
  AND Created < 1345753791000
  AND ContainerId='abcd'
它运行得更快(不到一秒钟)。但会产生更多的结果。确切地说是72330。这是不是有点不正确?基于我正在尝试做的,我希望能够改进查询

谢谢

我确信这不是索引问题,因为我们有一个关于相关字段和字段组合的索引

换句话说,你不确定你需要什么索引,所以你只是在你能想到的所有东西上添加索引?当考虑所有的多栏索引和列的排列时,有许多可能的组合。如果不了解您正在做什么,很可能您没有添加正确的索引

您应该将最有选择性的列放在索引的第一位。在这种情况下,
ContainerId
可能是最有选择性的。尝试添加此多列索引:

(ContainerId, CreatedId, ContKey)

重复一次:索引中的列顺序很重要。以不同的顺序创建具有相同列的索引可能会产生不同的性能特征。

不要忘记不时运行
ANALYZE
:我尝试运行“ANALYZE”,但它将所有内容锁定了很长时间,可能是因为我的数据库太大了。我们有一个这种形式的索引。我需要知道查询语法是否正确。
(ContainerId, CreatedId, ContKey)