对不起,只是清除我的问题。扩展这一问题Optimizing sqlite query为什么第一个查询比第二个查询快?
我有一个表:
CREATE TABLE IF NOT EXISTS [app_status](
[id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL ,
[status] TEXT DEFAULT NULL,
[type] INTEGER
)
我有两个指标。一个在status
上,另一个在type
上。哪个查询运行得更快,为什么?
SELECT COALESCE(min(type), 0)
FROM app_status
WHERE status IS NOT NULL
AND type IN (1,2) limit 1
查询计划O/P
0|0|0|SEARCH TABLE app_status USING INDEX idx_type (mailbox_type=?) (~10 rows)
0|0|0|EXECUTE LIST SUBQUERY 1
或者......
SELECT type FROM
app_status WHERE
status IS NOT NULL
ORDER BY type limit 1
查询计划O/P
0|0|0|SCAN TABLE app_status USING INDEX idx_type (~500000 rows)
你生成执行计划? – Randy 2012-02-28 17:29:43
@Randy我添加了查询计划o/p,但无法理解哪里有太大差异bw /有两个查询计划o/p – 2012-02-28 17:43:53
查询可能不会返回相同的结果,这可能会解释计划中的差异 – Sparky 2012-02-28 17:49:50