gpt4 book ai didi

SQLite NOT IN 查询很慢

转载 作者:IT王子 更新时间:2023-10-29 06:26:05 26 4
gpt4 key购买 nike

我有两个表 - KeysKeysTempKeysTemp 包含应使用 Hash 字段与 Keys 合并的临时数据。这是查询:

SELECT
r.[Id]
FROM
[KeysTemp] AS k
WHERE
r.[Hash] NOT IN (SELECT [Hash] FROM [Keys] WHERE [SourceId] = 10)

我在两个表上都有 SourceIdHash 字段的索引:

CREATE INDEX [IdxKeysTempSourceIdHash] ON [KeysTemp]
(
[SourceId],
[Hash]
);

Keys 表的索引相同,但查询仍然很慢。临时表中有 5 行,主表中有大约 60000 行。通过散列查询大约需要 27 毫秒,但是查询这 5 行大约需要 3 秒。

我也尝试过拆分索引,即为 SourceIdHash 创建不同的索引,但它的工作方式相同。 OUTER JOIN 在这里的效果更差。如何解决这个问题?

更新如果我从它在 30 毫秒内完成的查询中删除 WHERE [SourceId] = 10,那很好,但我需要这个条件:)

谢谢

最佳答案

也许

select k.id
from keytemp as k left outer join keys as kk on (k.hash=kk.hash and kk.sourceid=10)
where kk.hash is null;

?假设 rk。您是否也尝试过 not exists?我不知道它是否以不同的方式工作......

关于SQLite NOT IN 查询很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12749930/

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