union all的效率問題

2021-10-11 14:30:46 字數 353 閱讀 2641

sql中有個union all ,一提到它,第一反正都是它的效率差,但是是因為啥呢?

union all 是將查出來的結果合併起來,如果單純只是2張表的查詢合併,那效率就等同於查兩張表各自查詢所需要的時間相加,因為合併這個動作沒有涉及到計算

如果使用union all 之後使用了order by,limit等操作,(排序)其實是涉及到了大量的運算,所以會存在效率問題,而且是將合併起來的所有資料進行排序

如果合併後的資料量很大,排序欄位又沒有索引(準確的講是使用不到索引,因為即使排序欄位有索引,不在where條件中的話,也不會被使用到)的話,就會存在很大的效率問題,這裡的效率問題其實就是由大量資料排序引起的,跟union all其實沒有本質關係

Dynamic cast的效率問題

dynamic cast的作用 在derived class身上執行derived class 執行函式,手頭只有指向base的pointer或reference.方案一 class window class specialwindow public window 什麼也不做 class speci...

索引效率的問題

2張表a,b,a有10個字段,b有2個字段,a b在字段id上都有索引,假設a表有5萬條記錄,b表有20萬條記錄,現在a和b做連線a.id b.id。方案1 a做全表掃瞄,b使用索引 方案2 b做全表掃瞄,a使用索引 請問哪種方案查詢效率高?根據oracle優化路徑 rule 模式下的規則 1 有兩...

memset的效率問題

經過astyle格式化 void memset dstpp,c,len void dstpp int c size t len 前幾行等同於 void memset void dstpp,int c,size t len xlen len opsiz 8 while xlen 0 2號 while ...