【发布时间】:2020-01-09 23:28:14
【问题描述】:
我已经通过 oracle 创建了一个大的选择查询,我需要使用 UNION 插入 13 种不同的选择查询。我想知道,如果我能够减少 UNION 并通过连接查询创建它们,那么使用 UNION 查询还是不使用 UNION 查询对我来说最好的是什么?
谁给我的数据很快,有 UNION 还是没有 UNION ?
让我们举个例子来解决我的问题:
- 这是一个没有 UNION 查询
SELECT customer_name, SUM (CURRENT_TOTAL) CURRENT_TOTAL
FROM (SELECT CASE
WHEN gc.id = 11 THEN 'GOVT (Defence)'
WHEN gc.id <> 11 THEN 'GOVT (Except Defence)'
END
customer_name,
CB.CURRENT_TOTAL
FROM cust_domestic c
JOIN GOVERNMENT_CUSTOMERS gc ON c.code = gc.cust_code
JOIN customer_bill cb ON cb.cust_code = c.code)
GROUP BY customer_name
- 这是一个使用 UNION 查询
SELECT 'GOVT (Defence)' customer_name, SUM (CB.CURRENT_TOTAL) CURRENT_TOTAL
FROM cust_domestic c
JOIN GOVERNMENT_CUSTOMERS gc ON c.code = gc.cust_code
JOIN customer_bill cb ON cb.cust_code = c.code
WHERE gc.id = 11
UNION
SELECT 'GOVT (Defence)' customer_name, SUM (CB.CURRENT_TOTAL) CURRENT_TOTAL
FROM cust_domestic c
JOIN GOVERNMENT_CUSTOMERS gc ON c.code = gc.cust_code
JOIN customer_bill cb ON cb.cust_code = c.code
WHERE gc.id <> 11
他们都给我以下结果
Customer_name | CURRENT_TOTAL
-------------------------------------------
GOVT (Defence) | 29020
GOVT (Except Defence) | 2121974363
现在我的问题是谁给我更好的表现,考虑时间并更快地给我结果?
他们之间谁是更好的查询?
【问题讨论】:
标签: sql oracle oracle11g query-performance