XLYT 2023-01-06 19:12 采纳率: 0%
浏览 31

sql server查询问题

一个查询(select * from a),返回1100行数据,执行时间是不到一秒。我在这个查询后面增加了两个inner join,类似:
select * from (select * from a) a
inner join b on ...
inner join c on ...;
这两个inner join不会影响返回的行数。但是这个查询跑了2分半多。
我把select * from a这个做成视图,或者改成cte,时间都是2分半多。

但是,如果让它生成一个临时表,查询时间就又是不到一秒了。
类似:
select * into #t from a;
select * from #t a
inner join b ...
inner join c ..;.
drop table #t;

执行计划里建议加两个非聚集索引,加上以后,执行时间优化到3秒,但还是不如临时表快。
这是什么原因?

  • 写回答

1条回答 默认 最新

  • IT技术分享社区 优质创作者: 数据库技术领域 2023-01-07 10:56
    关注

    inner join 关联的时候,on关联的字段最好有索引

    评论

报告相同问题?

问题事件

  • 创建了问题 1月6日