1. 程式人生 > >Sql效能優化之UNION、UNION ALL

Sql效能優化之UNION、UNION ALL

SQL UNION 操作符
UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 SELECT 語句中的列的順序必須相同。

1、SQL UNION 語法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

註釋:預設地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNION ALL。

2、SQL UNION ALL 語法

SELECT
column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

另外,UNION 結果集中的列名總是等於 UNION 中第一個 SELECT 語句中的列名。

優化:

UNION 因為會將各查詢子集的記錄做比較,故比起UNION ALL ,通常速度都會慢上許多。一般來說,如果使用UNION ALL能滿足要求的話,務必使用UNION ALL。
還有一種情況不能忽略掉,就是雖然要求幾個子集的並集需要過濾掉重複記錄,但由於指令碼的特殊性,不可能存在重複記錄,這時便應該使用UNION ALL,如xx模組的某個查詢程式就曾經存在這種情況,見,由於語句的特殊性,在這個指令碼中幾個子集的記錄絕對不可能重複,故可以改用UNION ALL)