gpt4 book ai didi

sql - 最佳实践: Select * on CTE

转载 作者:行者123 更新时间:2023-12-04 14:57:26 25 4
gpt4 key购买 nike

以下帖子具有令人信服的理由,通常可以避免在SQL中使用select *

Why is SELECT * considered harmful?

在讨论中提供了使用select *何时或 Not Acceptable 示例。但是,我没有看到有关公用表表达式(CTE)的讨论。在CTE中使用select *有什么缺点吗?

例子:

WITH CTE1 AS
(
SELECT Doc, TotalDue
FROM ARInvoices
WHERE CustomerName = 'ABC'
UNION
SELECT Doc, - TotalDue
FROM ARInvoiceMemos
WHERE CustomerName = 'ABC'
)

select * from CTE1
UNION
Select 'Total' as Doc, sum(TotalDue)
FROM CTE1

最佳答案

由于您已经在cte中正确列出了列名称,因此使用select *中的cte不会造成任何危害。
实际上,使用select *可能是正确的地方,因为没有必要列出两次列。
除非是,否则不需要使用cte返回的所有列。 (即查询中使用cte中的列,但不使用select子句)在这种情况下,我建议仅列出您需要的列,甚至from指向cte

请注意,如果cte本身使用select *,则您链接到的帖子中列出的所有缺点都适用于它。

我对select *的主要反对意见是,懒惰的开发人员通常使用它,而不考虑*的后果。

注意:我在这里编写的所有内容也适用于派生表。

关于sql - 最佳实践: Select * on CTE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30329263/

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