1. 程式人生 > >SQL優化案例分享(一)union和union all

SQL優化案例分享(一)union和union all

#優化前:110s,優化後:0.185s

要善於檢視執行計劃:unique的cost是最大的,佔到了很多。

情形一:子查詢中多用union。

我們都知道,最小範圍unique可以提高速度,因此在sql子查詢中,儘可能避免寫union all,如果邏輯上改變不了,那麼就改成union先實現內部排重;例子:

select .... from A

  left join (

      (select .... from B)B1  union (select ... from C)C1 on B1.id=C1.id 

   )B2 

     on A.id=B2.id

情形二:非子查詢查詢結果合併union all要比union 效率高,但是業務上要保證各個部分資料不重複。

例子:

select .... from A

union all

select .... from B

union all

...