猿问

SQL Server 联查 加上order by 执行速度好慢

select
u.cncEmployeeID
,u.cnvcName uName,u.cnvcAccount
,u.cnvcLevel
,j.cniOrder
,j.cnvcJob
,u.cniOrganId
,cnvcHeadImg,o1.cnvcName oName,o1.cniNodeID

from tbLeaderJob j inner join tbuser u on j.cncEmployeeId=u.cncEmployeeId
inner join tbOrgan o1 on u.cniOrganId =cniNodeID inner join tbLeaderPermissions on j.cncEmployeeId=cncUserID
where j.cncState='1' order by j.cniOrder desc  
加上排序就好慢,不加就秒开。求大神解答
tbuser  、tbOrgan  大概有10w左右数据。其他的表大概就几百条数据

至尊宝的传说
浏览 978回答 5
5回答

忽然笑

1.查询出来的结果集应该不多吧,你可以先把数据查询出来后,在程序里面做排序 2.或者是用临时表存储查询结果,然后再排序

慕仙森

对需要order by的字段建立好索引就不会好慢了

梦里花落0921

sql查询可以说排序是最耗时的,诚如楼上所说1、对排序字段建立索引;2、优化where语句减小数据集

弑天下

WITH J( SELECT j.cniOrder,j.cnvcJob, j.cncEmployeeId FROM tbLeaderJob J WHERE  j.cncState='1' ORDER BY j.cniOrder desc  )SELECT  u.cncEmployeeID,u.cnvcName uName,u.cnvcAccount,u.cnvcLevel ,j.cniOrder,j.cnvcJob,u.cniOrganId,cnvcHeadImg,o1.cnvcName oName,o1.cniNodeID FROM Jinner join tbuser u on j.cncEmployeeId=u.cncEmployeeId inner join tbOrgan o1 on u.cniOrganId =cniNodeID inner join tbLeaderPermissions on j.cncEmployeeId=cncUserID   试下这句看看,
随时随地看视频慕课网APP

相关分类

SQL Server
我要回答