SQL Server 2019。这是 xml 计划要点的链接。
您好,我花了很长时间才明白为什么当它找不到包含其中一种状态的记录时,为什么这个查询需要 0.02 秒才能执行。当它找到具有包含状态之一的记录时,它往往要快得多。我猜这是因为一旦找到匹配的 1 行,查询就会停止。
SELECT TOP 1 IDNum,
FORMAT(Date, 'M/d/yy') AS theDate,
Status,
Rate
FROM theDB
INNER JOIN DomainTable
ON theDB.IDNum = DomainTable.IDNum
WHERE DomainIP = '127.0.0.1'
AND status IN ( 'Active', 'To ReActivate', 'To Deactivate', 'Deactivate ASAP',
'SUSPENDED', 'SUSPENDED X', 'SUSPENDED Y', 'SUSPENDED Z' )
ORDER BY theDB.IDNum DESC
Run Code Online (Sandbox Code Playgroud)
(DomainIP属于DomainTable,其他属于DB)
在执行计划中,最大的成本是 TOP N SORT,占 33% 聚集索引搜索占 29% 对 DomainTable 的键查找使用了 29% 在 DomainTable 上搜索 IP 的索引是 9%
我的问题是:
有没有办法让TOP N不那么重?
0.02 …