关于SQL Server多表查询性能问题

时间:2021-03-04 00:26:44
在同一个数据库了,我要查两个表以上的数据,如下二例:

1、select * from t_table1;select * from t_table2;

2、select a.*,b.* from t_table1 a left join t_table2 b on id1=id2(假设表一与表2的的id是关联的)。

以上两查询哪条查询语句更优势?能详细些解析下优势的一方吗?最好也提供一些参考资料的链接给阅读。

谢各位大神回答了

8 个解决方案

#1


第一个语句不是两个表关联啊。一般jion语句性能比select * from T1,T2 where T1.A = T2.A性能高

#2


两个的结果都不一样,怎么比?而且你连where条件都没有,第一种走表/聚集索引扫描。第二种根据id是否有索引、选择度的情况而定

#3


引用 2 楼 DBA_Huangzj 的回复:
两个的结果都不一样,怎么比?而且你连where条件都没有,第一种走表/聚集索引扫描。第二种根据id是否有索引、选择度的情况而定

我的目的是把两个表的数据都查出来,第一种可以返回一个DataSet数据集形式,我就想了解它们俩的性能

#4


那你
select * from a
union all 
select * from b
就得了

#5


引用 1 楼 lhqdyy9 的回复:
第一个语句不是两个表关联啊。一般jion语句性能比select * from T1,T2 where T1.A = T2.A性能高

我的目的是把两个表的数据都查出来,第一种可以返回一个DataSet数据集形式,我就想了解它们俩的性能

#6


引用 4 楼 DBA_Huangzj 的回复:
那你
select * from a
union all 
select * from b
就得了

说得的话我所写的两种情况都可以,就是当两个表都有大数据时,哪种更有优势。

#7


具体情况具体分析,你把几个脚本放在同一个查询界面,然后按ctrl+M,再点F5,观察下面的图,百分比小的通常开销更小,也差不多等同于性能更好

#8


我觉得应该第一种会快点吧

第一种就两个无序扫描,虽然是出的行要多些

第二种,至少多了个连接的消耗吧

#1


第一个语句不是两个表关联啊。一般jion语句性能比select * from T1,T2 where T1.A = T2.A性能高

#2


两个的结果都不一样,怎么比?而且你连where条件都没有,第一种走表/聚集索引扫描。第二种根据id是否有索引、选择度的情况而定

#3


引用 2 楼 DBA_Huangzj 的回复:
两个的结果都不一样,怎么比?而且你连where条件都没有,第一种走表/聚集索引扫描。第二种根据id是否有索引、选择度的情况而定

我的目的是把两个表的数据都查出来,第一种可以返回一个DataSet数据集形式,我就想了解它们俩的性能

#4


那你
select * from a
union all 
select * from b
就得了

#5


引用 1 楼 lhqdyy9 的回复:
第一个语句不是两个表关联啊。一般jion语句性能比select * from T1,T2 where T1.A = T2.A性能高

我的目的是把两个表的数据都查出来,第一种可以返回一个DataSet数据集形式,我就想了解它们俩的性能

#6


引用 4 楼 DBA_Huangzj 的回复:
那你
select * from a
union all 
select * from b
就得了

说得的话我所写的两种情况都可以,就是当两个表都有大数据时,哪种更有优势。

#7


具体情况具体分析,你把几个脚本放在同一个查询界面,然后按ctrl+M,再点F5,观察下面的图,百分比小的通常开销更小,也差不多等同于性能更好

#8


我觉得应该第一种会快点吧

第一种就两个无序扫描,虽然是出的行要多些

第二种,至少多了个连接的消耗吧