【Python入門教程】五個常見的最佳化SQL的技巧!

老男孩IT教育機構發表於2022-09-01

  程式設計人員一定不陌生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預設是不開啟查詢快取的,需要手動開啟。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2912926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章