gpt4 book ai didi

sql-server - 基本的 sql server 子查询,它如何影响性能?

转载 作者:行者123 更新时间:2023-12-04 05:13:33 25 4
gpt4 key购买 nike

这个 SQL 查询有性能损失吗?

select fullname, address from (select (name + ' ' + lastname) as fullname, address from mytable) as tab



比较:

select (name + ' ' + lastname) as fullname, address from mytable



也许你会想..为什么我要这样做,原因是因为 SQL Server 不允许在 group by 中使用别名,所以使用子查询我可以这样做

select fullname, address from (select (name + ' ' + lastname) as fullname, address from mytable) as tab group by fullname



而不是

select (name + ' ' + lastname) as fullname, address from mytable group by name + ' ' + lastname



这只是一个例子,其中 alias 是基本串联的别名,但一些串联更复杂,将其重写为 group 子句真的很难看。

最佳答案

子查询本身不太可能导致性能问题。查询计划器可能会重新排列查询,使其最终根本不是子查询。查看性能计划将揭示查询实际发生的情况。

可能存在性能问题的是您正在根据计算值进行分组。这意味着数据库不能使用任何索引进行分组,因此它必须创建所有值,然后对它们进行排序。

如果可能,您应该对计算中使用的值进行分组,例如:

select name + ' ' + lastname as fullname
from mytable
group by name, lastname

关于sql-server - 基本的 sql server 子查询,它如何影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14584357/

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