Sql效能優化之UNION UNION ALL

2021-08-07 20:10:45 字數 809 閱讀 7015

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

allselect column_name(s) from table_name2

另外,union 結果集中的列名總是等於 union 中第乙個 select 語句中的列名。

優化:union 因為會將各查詢子集的記錄做比較,故比起union all ,通常速度都會慢上許多。一般來說,如果使用union all能滿足要求的話,務必使用union all。

還有一種情況不能忽略掉,就是雖然要求幾個子集的並集需要過濾掉重覆記錄,但由於指令碼的特殊性,不可能存在重覆記錄,這時便應該使用union all,如xx模組的某個查詢程式就曾經存在這種情況,見,由於語句的特殊性,在這個指令碼中幾個子集的記錄絕對不可能重複,故可以改用union all)

Sql效能優化之in exists

in 和exists in是把外表和內錶作hash 連線,而exists 是對外表作loop 迴圈,每次loop 迴圈再對內表進行查詢。一直以來認為exists 比in 效率高的說法是不準確的。如果查詢的兩個表大小相當,那麼用in 和exists 差別不大。如果兩個表中乙個較小,乙個是大表,則子查詢...

效能優化 SQL優化

1.列型別盡量定義成數值型別,且長度盡可能短,如主鍵和外來鍵,型別字段等等 2.建立單列索引 3.根據需要建立多列聯合索引 當單個列過濾之後還有很多資料,那麼索引的效率將會比較低,即列的區分度較低,那麼如果在多個列上建立索引,那麼多個列的區分度就大多了,將會有顯著的效率提高。4.根據業務場景建立覆蓋...

SQL效能優化

postgre資料表資料比較多的情況下,使用模糊查詢效能很差,但是使用函式反而快了,返回資料一致,有點不解 warning表2688133條資料,warning message表6954788條資料 這個sql執行老半天都沒反映,耗時169904 ms select count 1 from war...