为什么SQLite索引不会加快我的查询速度

时间:2013-05-24 13:47:50

标签: sql sqlite

我有两张桌子:

tblValidItems - | - tblItems

validID        itemID
-------        ------
3              1
5              2
6              3
...            4
~ 8 K items    5
               ..... 
               ~ 20 K items

我的查询是选择tblItems中同样位于tblValidItems的某些内容:

SELECT tblItems.itemID FROM tblItems 
JOIN tblValidItems ON tblItems.itemID = tblValidItems.validID

我在两个表上都尝试了带有和没有索引的查询,但结果变化很小:

  • 两个表都有索引 - 127ms
  • 两个表都没有索引 - 132ms

这令我感到惊讶,因为我认为索引会显着影响此查询的速度。为什么不呢?

2 个答案:

答案 0 :(得分:5)

我猜测查询主要是返回8,000个值的时间,而不是查找行的时间。

当您缩小正在使用的数据的大小时,索引最有用。从20k行减少到8k并不是特别重要。

答案 1 :(得分:4)

默认情况下会为Sqlite主键编制索引。无论如何,您正在加入索引的主键。

如果您对sqlite如何处理查询有疑问,请使用EXPLAIN QUERY PLAN