gpt4 book ai didi

sql - 为什么SQLite索引不能加快查询速度?

转载 作者:行者123 更新时间:2023-12-03 18:30:49 26 4
gpt4 key购买 nike

我写了这个查询:

INSERT INTO KeysTable (KeyText, Id)
SELECT KeyText as BKT, KeysTable.ID as CID FROM KeysTable
INNER JOIN StatTable ON KeysTable.ID = StatTable.Key_ID
WHERE StatTable.StatCommandCode = 4 AND
EXISTS (SELECT 1 FROM StatTable WHERE StatCommandCode = 4 AND StatTable.Key_ID = CID);


我知道消除病情

AND StatTable.Key_ID = CID


将使查询非常快。另外,如果我将其替换为

AND StatTable.Key_ID = 444 // (444 - random static number)


查询也将非常快。在这种情况下的两个列都被索引:

CREATE INDEX IF NOT EXISTS StatsIndex ON StatTable (Key_ID);


在KeysTable中,ID列是主键。为什么在这种情况下索引不能提高性能?

感谢您的回答,对不起我的英语不好:(。

最佳答案

如果两个表中的任何一个均没有CID列,则EXISTS子查询将无用。将语句重写为:

INSERT INTO KeysTable (KeyText, Id)
SELECT KeyText
, KeysTable.ID
FROM KeysTable
INNER JOIN StatTable
ON KeysTable.ID = StatTable.Key_ID
WHERE StatTable.StatCommandCode = 4


如果仍然很慢,可以尝试在 (StatCommandCode, Key_ID)上添加索引

关于sql - 为什么SQLite索引不能加快查询速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9842956/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com