SQLite重新遍历表,它的效率如何?
我有以下疑问SQLite重新遍历表,它的效率如何?,sqlite,Sqlite,我有以下疑问 WITH temptable AS (SELECT listid, isplayer, name, nametagname, OWNER, target, helditem, distance FROM SuspectListEntries indexed BY SuspectListEntriesByListID WHERE
WITH temptable AS
(SELECT listid,
isplayer,
name,
nametagname,
OWNER,
target,
helditem,
distance
FROM SuspectListEntries indexed BY SuspectListEntriesByListID
WHERE listid =
(SELECT suspectList
FROM BlocksBrokenByExplosion
WHERE BlocksBrokenByExplosion.id=76142)
ORDER BY distance ASC)
SELECT *
FROM
(SELECT isplayer,
name,
nametagname,
OWNER,
target,
helditem,
distance
FROM temptable
LEFT JOIN
(SELECT count(*)/7 AS cnt,
0 AS bonus
FROM temptable) counter ON 0 = counter.bonus LIMIT 0,
7)
根据查询计划,它两次遍历诱惑,尽可能地从查询计划中推断出所有内容
"3","0","0","SEARCH TABLE SuspectListEntries USING INDEX SuspectListEntriesByListID (listid=?)"
"3","0","0","EXECUTE SCALAR SUBQUERY 4"
"4","0","0","SEARCH TABLE BlocksBrokenByExplosion USING INTEGER PRIMARY KEY (rowid=?)"
"3","0","0","USE TEMP B-TREE FOR ORDER BY"
"2","0","0","SCAN SUBQUERY 3"
"1","0","0","SEARCH TABLE SuspectListEntries USING INDEX SuspectListEntriesByListID (listid=?)"
"1","0","0","EXECUTE SCALAR SUBQUERY 5"
"5","0","0","SEARCH TABLE BlocksBrokenByExplosion USING INTEGER PRIMARY KEY (rowid=?)"
"1","1","1","SCAN SUBQUERY 2 AS counter"
"1","0","0","USE TEMP B-TREE FOR ORDER BY"
"0","0","0","SCAN SUBQUERY 1"
由于我的分页方法,它在表中移动了两次。它仍然在0毫秒内完成,记录数为10万条,因此速度本身并不是这个问题的问题
在SQLite中,临时视图的处理方式与“真实”视图类似,而“真实”视图的处理方式不同。 同一视图的两个实例永远不会合并(除非它们展平到外部查询中)
解释查询计划输出说谎是没有意义的。好的。所以它走了两次。谢谢