有时,在创建SQL查询时,假设在获取数据时引擎应使用其中一个索引。但不总是。如果没有一些必需品,发动机可能会逐个处理这些行。 这是一种方式(对于sqlite)确定是否使用了索引?我的意思是在比rowid 表顺序的 SELECT rowid更复杂的情况下 问题也出现了,因为如果我们用简单的基础测试,时间测量将无济于事,它们之间的差异将是最小的。
答案 0 :(得分:7)
大多数DBMS都能够解释他们如何执行查询。对于SQLite,您在SQL语句之前加上单词EXPLAIN。
所以,一个简单的案例:
EXPLAIN SELECT * FROM TableName
将告诉您是否使用了索引。
请注意,查询计划可能会随着数据库中数据的数量和性质的变化而变化。引擎可以选择使用另一个索引,具体取决于表大小以及索引列中不同值的数量和分布。因此,使用测试数据库从EXPAIN获取的信息可能无法反映充满“真实”数据的数据库上的实际查询计划。