我想优化我的查询(不是结果)来删除冗余数据,以便在需要时轻松阅读和更新。
表格
A, B, C
1 B1 1.99
2 B2 6.99
3 B3 7.99
我有一个看起来像的查询:
SELECT A, B FROM TABLE
UNION ALL
SELECT A, C FROM TABLE
UNION ALL
SELECT A, 'string' FROM TABLE;
在这种情况下,A在我的查询中是多余的,因为它被多次写入。如何让此查询只有一次?感谢。
编辑:我想看到完全相同的结果,但SQL代码仅引用一列A列。
答案 0 :(得分:0)
以下代码:
SELECT A, B FROM TABLE
UNION ALL
SELECT A, C FROM TABLE
UNION ALL
SELECT A, 'string' FROM TABLE;
从table
读取三次。它实际上可以优化:
select A,
(case when n = 1 then B
when n = 2 then C
when n = 3 then 'string'
end) as B
from TABLE cross join
(select 1 as n union all select 2 union all select 3) n;
对于此查询,SQL引擎通常只扫描TABLE
一次,循环遍历n
中的3行。这可能会改善绩效。