union分頁查詢優化


當使用union來查詢,並分頁時

如果數據量很大,很容易造成查詢超時,要么就是特別慢

首先我們先分析下數據,是否完全不重復

如果不重復,則使用 union all 

union all和union的區別是,UNION 操作會對結果去重且排序,所以從速度來說, UNION ALL會更勝一籌

接着,所有的條件查詢,從子查詢入手

例如

  select * from (
    select id from A 
    union all
    select id from B
    ) t
  where t.id>1 limit 10

這時,會從A表查詢所有的數據,拼接,查詢B表的所有數據,再執行where條件,在分頁,查詢速度可想而知

優化,從子查詢過濾條件

  select * from (
    select id from A  where id>1
    union all
    select id from B where id>1
    ) t limit 10

一定要先篩選再合並數據,這樣可以有效的減少數據量,提高查詢速度

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM