1. 程式人生 > >Mysql union和union all用法

Mysql union和union all用法

計劃 功能 all 後來 nio 詳情 如果 text 導致

1: 什麽時候用union和union all ?

    我們經常會碰到這樣的應用,兩個表的數據按照一定的查詢條件查詢出來以後,需要將結果合並到一起顯示出來,這個時候

就需要用到union和union all關鍵字來實現這樣的功能,union和union all的主要區別是union all是把結果集直接合並在一起,而

union 是將union all後的結果鏡像一次distinct,去除重復的記錄後的結果。

    看下面的例子:

查詢一:

技術分享圖片

查詢二:

技術分享圖片

兩個結果集進行union all為(直接將兩個查詢結果集合並):

技術分享圖片

兩個結果集鏡像union 運算結果為(兩個結果集合並後進行去重/distinct):

技術分享圖片

總結: 在xwwd項目中由於還款計劃表(tb_laon_repayment)數據量巨大(數量2000萬),

查詢一條借款的還款計劃時候巨慢,當時為了解決查詢慢問題就建立了一張還款計劃

備份表(tb_loan_repayment_his),將還款計劃表tb_loan_repayment中的已經結清

的借款的還款計劃數據導出1000萬到了還款計劃備份表tb_loan_repayment_his中,

這樣做解決了還款計劃表tb_loan_repayment中數據過大導致查看借款loan詳情時展示

查詢該筆借款loan的還款計劃查詢卡死的情況。 後來由於項目需要需要查詢備份表中的數據,

於是對內管查看借款詳情接口進行了優化升級。 獲取具體某一條還款計劃的時候首先查詢

還款計劃表tb_laon_repayment如果沒有再去查詢還款計劃備份表tb_loan_repayment_his.

同時“借款管理”菜單中是去分頁查詢所有還款計劃,為了數據完整性,

這裏就采用了union聯合查詢tb_loan_repayment,和tb_tb_repayment_his表。

  

Mysql union和union all用法