【发布时间】:2022-09-28 02:42:22
【问题描述】:
我正在查询带有索引的表:
CREATE TABLE hwmd (cycle INT NOT NULL, id INT NOT NULL, ip INT NOT NULL, name CHAR(20) NOT NULL, uid INT NOT NULL, bin INT NOT NULL, num_data INT NOT NULL, task INT NOT NULL, utid INT NOT NULL, term_op INT NOT NULL, context INT NOT NULL);
CREATE INDEX idx_hwmd_id ON hwmd (id)
我以不同的速度在同一张表上进行 2 次查询:
SELECT cycle, id FROM hwmd WHERE id = 100; // 38ms
SELECT cycle, id, ip FROM hwmd WHERE id = 100; // 1089ms
包含ip(INT 字段)的第二个查询需要 1089 毫秒,而第一个查询只需要 38 毫秒。我确认两个查询都使用相同的索引:
sqlite> explain query plan SELECT cycle, id FROM hwmd WHERE id = 100;
QUERY PLAN
`--SEARCH hwmd USING INDEX idx_hwmd_id (id=?)
sqlite> explain query plan SELECT cycle, id, ip FROM hwmd WHERE id = 100;
QUERY PLAN
`--SEARCH hwmd USING INDEX idx_hwmd_id (id=?)
为什么第二个查询需要这么长时间?我该如何解决?
标签: performance sqlite