gpt4 book ai didi

sql - 优化查询,使其不需要 Top N 排序

转载 作者:行者123 更新时间:2023-12-04 12:08:51 27 4
gpt4 key购买 nike

我有以下查询

select top 25
tblSystem.systemName,
tblCompany.name
from
tblSystem
join tblCompany
on tblSystem.fkCompanyID = tblCompany.pkCompanyID
order by
tblSystem.systemName,
tblCompany.name

生成图片中的第一个执行计划,第二个是没有 order by的相同查询
enter image description here
有什么办法可以摆脱 TOP N Sort (所以只需要 TOP)通过以特定方式索引表?

最佳答案

tblSystem 添加索引在 systemNamefkCompanyID包括。

create index IX_tblSystem_systemName 
on tblSystem(systemName) include(fkCompanyID)

重写您的查询以从 tblSystem 中选取前 25 个值(带关系)在按 systemName 排序的派生表中然后加入 tblCompany获得您需要的 25 个值。

取决于是否 fkCompanyID是否允许空值,您需要在派生表的 where 子句中过滤掉空值。
select top (25)
S.systemName,
C.name
from (
select top (25) with ties
S.fkCompanyID,
S.systemName
from tblSystem as S
where S.fkCompanyID is not null
order by S.systemName
) as S
inner join tblCompany as C
on S.fkCompanyID = C.pkCompanyID
order by S.systemName,
C.name

您仍然需要使用 top(n) 排序运算符,但它只会对您从与 tblCompany 连接的派生表中获得的 25 行(+ 关系)进行排序。 .

enter image description here

关于sql - 优化查询,使其不需要 Top N 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19982562/

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