SQLite确定是否使用索引

unguejic  于 2022-11-15  发布在  SQLite
关注(0)|答案(2)|浏览(431)

1.如何了解select查询运行时是否使用了创建的index
1.我的任务的具体示例:
索引:

events (page,notuniqueid,type,timestamp);

SQL语句:

SELECT * 
  FROM events 
  WHERE type = 'comment' AND TIMESTAMP > $time AND PAGE = '$page' 
  LIMIT 1

在此查询中将使用索引吗?

kx5bkwkv

kx5bkwkv1#

要了解查询是如何执行的,请使用EXPLAIN QUERY PLAN运行它:

> EXPLAIN QUERY PLAN SELECT * from events WHERE type='comment' AND TIMESTAMP > $time AND PAGE = '$page' LIMIT 1
0|0|0|SEARCH TABLE events USING INDEX MyLittleIndex (page=?)

在这种情况下,只有索引的第一列可以使用,因为在notuniqueuid列上没有查找。
更好的索引(对于这个查询)应该在(page,comment,timestamp)上。
(请参见The SQLite Query Planner。)

pjngdqdw

pjngdqdw2#

按照@CL描述的那样使用了EXPLAIN QUERY PLAN之后,您可能希望确切地查看您拥有哪些索引……

SELECT name, tbl_name FROM sqlite_master WHERE type = 'index'

相关问题