http://blog.csdn.net/robinson1988/article/details/9054717
最近遇到個SQL 跑的很慢,第一次12秒出結果(從磁盤讀入內存),第二次2秒出結果(數據都在buffer cache裏面),SQL代碼如下
- SELECT COUNT(0) FROM P LEFT JOIN R ON P.ID = R.ID;
P 有200W 數據 R 有 100W 數據。這個SQL 第一次跑12秒,肯定無法接受。 那麼大家看看這個SQL如何優化?
其實這個SQL寫得有問題, 這裏是外連接,並且求COUNT(*) 還有,JOIN字段是ID,ID 一般都是主鍵,那麼這個SQL完全可以改寫 爲
- SELECT COUNT(0) FROM P;
改寫之後 COUNT(*) 直接讀取 P表主鍵,0.1秒--1秒出結果,當然了,請注意,如果R表ID不是主鍵,並且R表ID 有重複值,COUNT(*) 會變大 ,不能這麼改寫