一次千萬級別的SQL查詢簡單優化體驗


背景:從兩張有關聯的表查詢數據,A表數據量1400萬,B表數據量8000萬。A與B通過ID邏輯關聯,沒有實際的外鍵。B表是后來擴展出來的.

問題:根據某個ID查詢時超時,運行時跑不出結果。

原因:使用一個or條件,條件里面有一個是A.ID=B.ID

簡單優化:將or條件拆開,使用union all將之前使用表變量的部分換成了臨時表對排序的字段加上了索引

結果:在50ms內能夠查詢出結果,這個與之前的超時簡直不能相比。

感想:感謝DBA mm的幫助,讓我有了這樣的體驗,不實際的處理(哪怕很簡單的表關系)千萬級的數據量,真不知道SQL語句的性能差異。

        實際的體驗了使用or的性能居然能夠差到這個地步,以后盡量避免使用了。

我沒有描述清楚具體的問題,只是大致的說了下。我自己是明白了,記錄下來以備后面參考。也希望能夠給像我一樣的SQL菜菜鳥有點啟發。

SQL優化的實踐之路還很長,我要慢慢走。工作過程中的體驗隨時記錄下來,分享給大家。

 


免責聲明!

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



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