應用程序慢如牛,緣由多多,多是網絡的緣由、多是系統架構的緣由,還有多是數據庫的緣由。程序員
那麼如何提升數據庫SQL語句執行速度呢?有人會說性能調優是DBA的事,然而性能調優跟程序員們也有莫大的關係。數據庫
程序中嵌入一行行SQL語句,若是使用了一些優化小技巧,定能達到事半功倍的效果。服務器
技巧1 比較用算符能用「=」就不用「<>」
網絡
「=」增長了索引的使用概率。架構
技巧2 明知只有一條查詢結果,那請使用「limit 1」性能
"limit 1"能夠避免全表掃描,找到對應結果就不會再繼續掃描了。測試
技巧3 爲列選擇合適的數據類型優化
能用「tinyint」就不用「smallint」,能用「smallint」就不用「int」,磁盤和內存小孩越小越好嘛。spa
技巧4 將大的DELETE,UPDATE or INSERT 查詢變成多個小查詢索引
能寫一個幾十行、幾百行的SQL語句是否是顯得逼格很高?然而,爲了達到更好的性能以及更好的數據控制,你能夠將他們變成多個小查詢。
技巧5 使用「union all」 代替 「union」,若是結果集容許重複的話
由於「union all」不去重,效率高於「union」
技巧6 爲得到相同結果集而屢次執行,請保持SQL語句先後一致
這樣作是爲了充分利用查詢緩衝。
技巧7 儘可能避免使用「select *」
若是不查詢表中全部的列,儘可能避免使用 SELECT *,由於它會進行全表掃描,不能有效利用索引,增大了數據庫服務器的負擔,以及它與應用程序客戶端之間的網絡IO開銷。
技巧8 WHERE 、JOIN、ORDER BY 子句裏儘可能被索引
只是「儘可能」 而已,並非說全部列。因地制宜,根據實際狀況進行調整,由於有時索引太多也會下降性能。
技巧9 使用 LIMIT 實現分頁邏輯
不只提升了性能,同時減小了沒必要要的數據庫和應用間的網絡傳輸。
技巧10 使用「explain」 關鍵字查看執行計劃
「explain」 能夠查看索引使用狀況以及掃描的行。
其餘
SQL調優方法不少,一樣的查詢結果能夠有不少種不一樣的查詢方式。其實最好的方法就是在開發環境中用最貼近真是的數據集和硬件環境進行測試,而後再發布到生產環境中。