我有两张桌子 -Keys
和KeysTemp
.
KeysTemp
包含应Keys
使用该Hash
字段合并的临时数据。这是查询:
SELECT
r.[Id]
FROM
[KeysTemp] AS k
WHERE
r.[Hash] NOT IN (SELECT [Hash] FROM [Keys] WHERE [SourceId] = 10)
我在两个表SourceId
和Hash
字段上都有索引:
CREATE INDEX [IdxKeysTempSourceIdHash] ON [KeysTemp]
(
[SourceId],
[Hash]
);
表的索引相同Keys
,但查询仍然很慢。临时表中有 5 行,主表中有大约 60000 行。通过哈希查询大约需要 27 毫秒,但是查询这 5 行大约需要 3 秒。
我也尝试过拆分索引,即为SourceId
and创建不同的索引Hash
,但它的工作方式相同。OUTER JOIN
在这里工作得更糟。如何解决这个问题?
更新
如果我WHERE [SourceId] = 10
从查询中删除它会在 30 毫秒内完成,那很好,但我需要这个条件 :)
谢谢