我有两张桌子:
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
我在两个表上都尝试了带有和没有索引的查询,但结果变化很小:
这令我感到惊讶,因为我认为索引会显着影响此查询的速度。为什么不呢?
答案 0 :(得分:5)
我猜测查询主要是返回8,000个值的时间,而不是查找行的时间。
当您缩小正在使用的数据的大小时,索引最有用。从20k行减少到8k并不是特别重要。
答案 1 :(得分:4)
默认情况下会为Sqlite主键编制索引。无论如何,您正在加入索引的主键。
如果您对sqlite如何处理查询有疑问,请使用EXPLAIN QUERY PLAN