在應用系統開發初期,由於開發資料庫數據比較少,對於查詢SQL語句,複雜視圖的的編寫等體會不出SQL語句各種寫法的性能優劣,但是如果將應用 系統提交實際應用後,隨著資料庫中數據的增加,系統的響應速度就成為目前系統需要解決的最主要的問題之一。系統優化中一個很重要的方面就是SQL語句的優 化。對於海量數據... ...
使用的索引名稱:
1.隱式轉換導致索引失效。
由於表欄位定義為vachar類型,但在查詢時把該欄位作為number類型 以及where條件傳給mysql。
2.對索引列進行任何操作(計算(+、-、*、/等)、函數、自動/手動類型轉換)導致索引失效。
錯誤的例子:select * from test where id-1=9;
正確的例子:select * from test where id=10; 3.使用<>、not in、not exist、!= 會導致索引失效 4.查詢條件包含or,會導致索引失效。
5.索引欄位使用 like '%字元串%' 時,會導致索引失效而轉向全表掃描。
使用覆蓋索引可以解決。
將通配符放置在字元串後面可以解決。 6. 變數使用的是times類型,表欄位採用date類型。或相反情況。 7.當全表掃描速度比索引速度快時,mysql會使用全表掃描。 8.mysql5.7中,只有小於等於和小於才會觸發索引。