关于 order by 导致查询慢

jestymat jestymat 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

查询


select a.columns, b.columns,c.columns --columns表示多列数据,不代表列名称
from TA a
left join TB b on a.xx=b.xx
left join TC c on b.yy=c.yy
where conditions --查询条件


使用SQL Server 2008 数据库
TA 表数据量 70K +
TB表数据量 4M+
TC表数据 10K+

执行以上 SQL ,耗时 1 s ,结果集 2条数据

现在嵌套一层查询

select * , col1*col2
from (
select a.columns, b.columns,c.columns --columns表示多列数据,不代表列名称
from TA a
left join TB b on a.xx=b.xx
left join TC c on b.yy=c.yy
where conditions --查询条件
) a order by id asc


id 来自表TB,是个自增 IDENTITY字段,(TA,TB,TC表都有IDENTITY 的ID字段,但只有B.ID被SELECT出来)
整个查询条件与第一个相同,但是耗时 13 m , 2条数据

如果把 order by id asc 去掉,耗时 1 s , 2条数据





...全文

相关推荐

评论 8
收藏 已收藏
分享
返回顶部
jestymat
应用实例 27,579 成员 68,540 内容