五個常見的優化SQL的技巧!
編程人員一定不陌生SQL語句吧,在我們日常寫項目過程中,或多或少都會使用到SQL,SQL主要功能有增刪改查,其中最常見的就是查詢了,因此SQL語句的性能就變得至關重要,如何優化SQL呢?請看下文:
一、分解SQL
當我們遇到一個較復雜的SQL時,可以選擇將它拆分成多個簡單的SQL,這樣既能保證處理結果,SQL也更簡短了。
在面對超級復雜SQL語句時,性能提升尤為明顯,推薦分解為小查詢來進行優化,不過在應用設計時,如果一個查詢能解決問題且不會產生性能問題,這是完全沒問題的。
分解可以使緩存更高效,可以很方便地緩存單表查詢結果對應的結果,執行單個查詢也可以減少表鎖的競爭,在程序應用層做關聯,更容易對數據庫進行拆分,也更容易做到高性能和可擴展。
二、查詢切分
遇到結果集很大的查詢,我們可以采用“分而治之”的思想,即將大查詢切分為小查詢,每個查詢功能完全一樣,只是各自完成一小部分,每次只返回一小部分的查詢結果,類似于分頁查詢。
查詢切分不管是對于SQL查詢本身,還是對于上層業務來說,都是很小的開銷。
三、執行計劃
使用EXPLAIN關鍵字,可以讓我們知道MYSQL是如何執行SQL語句的,可以幫助我們分析我們的查詢語句或是表結構的性能瓶頸,EXPLAIN的查詢結果還會告訴我們索引主鍵是如何被利用的,數據表示如何被搜索或排序的等等。
四、遵守原則
在我們平時寫SQL時,養成良好習慣就可以很大程度上避免一些SQL性能問題。盤點以下幾點:
a. 永遠為每張表設置一個ID主鍵;
b. 避免使用SELECT *;
c. 為搜索字段建立索引;
d. 在Join表時使用對應類型的列,并將其索引;
e. 盡可能使用NOT NULL;
五、使用查詢緩存
當有很多相同查詢被執行多次時,這些結果往往會被放入一個緩存中,這樣后續的相同查詢就不用操作而直接訪問緩存結果了。
MySQL查詢緩存保存查詢返回的完整結果。當查詢命中該緩存,MySQL會like返回結果,跳過了解析、優化和執行截斷。
這是提高查詢性能最有效的方法之一,而且這是被MySQL引擎處理的,通常MySQL默認是不開啟查詢緩存的,需要手動開啟。