4

我有 2 张桌子:

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

这让我感到惊讶,因为我认为索引会极大地影响此查询的速度。为什么不呢?

4

2 回答 2

5

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

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

于 2013-05-24T13:57:45.623 回答
4

Sqlite 主键默认被索引。无论如何,您都在加入索引主键。

每当您对 sqlite 如何处理您的查询有疑问时,请使用EXPLAIN QUERY PLAN

于 2013-05-24T13:56:39.973 回答