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