我有两张桌子 -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 秒。
我也尝试过拆分索引,即为SourceIdand创建不同的索引Hash,但它的工作方式相同。OUTER JOIN在这里工作得更糟。如何解决这个问题?
更新
如果我WHERE [SourceId] = 10从查询中删除它会在 30 毫秒内完成,那很好,但我需要这个条件 :)
谢谢