我們在寫資料庫查詢語句的時候,經常會忽略一些查詢效能問題,導致最後在查詢資料的情況下非常耗時,影響專案質量。
資料庫的設計是一門藝術,需要遵循一定的規範。
對資料量很大的表一定要建立合適的索引,無論是單個索引還是復合索引,要根據查詢的業務邏輯去建立,同時也記住,單個表的索參數量不得超過5個,不然會很導致影響寫入的效能。
建立了合適的索引折後,我們要會正確的運用,這是關鍵,盡量避免全表掃瞄搜尋這樣的情況,不然索引就是雞肋了。
1、查詢條件中帶有 「where 字段 is null」 會導致全表掃瞄,不會使用字段索引
2、不等於操作符(!=或者<>)會限制索引,引起全表掃瞄,即使比較的字段上有索引
3、對於like 『%...%』(全模糊)這樣的條件,是無法使用索引的,但是變成like 『…%』,是會使用索引的
4、復合索引的使用一定要根據建立的順序去設定條件,復合索引的結構與**簿類似,人名由姓和名構成,**簿首先按姓氏對進行排序,然後按名字對有相同姓氏的人進行排序。如果您知道姓,**簿將非常有用;如果您知道姓和名,**簿則更為有用,但如果您只知道名不姓,**簿將沒有用處
5、盡量避免在where子句中對字段進行函式操作,這將導致引擎放棄使用索引而進行全表掃瞄
MySql避免全表掃瞄
在以下幾種條件下,mysql就會做全表掃瞄 1 資料表是在太小了,做一次全表掃瞄比做索引鍵的查詢來得快多了。當表的記錄總數小於10且記錄長度比較短時通常這麼做。2 沒有合適用於 on 或 where 分句的索引字段。3 讓索引欄位和常量值比較,mysql已經計算 基於索引樹 到常量覆蓋了資料表的很大...
Mysql如何避免全表掃瞄的方法
在以下幾種條件下,mysql就會做全表掃瞄 1 資料表是在太小了,做一次全表掃瞄比做索引鍵的查詢來得快多了。當表的記錄總數小於10且記錄長度比較短時通常這麼做。2 沒有合適用於 on 或 where 分句的索引字段。3 讓索引欄位和常量值比較,mysql已經計算 基於索引樹 到常量覆蓋了資料表的很大...
Mysql如何避免全表掃瞄的方法
在以下幾種條件下,mysql就會做全表掃瞄 1 資料表是在太小了,做一次全表掃瞄比做索引鍵的查詢來得快多了。當表的記錄總數小於10且記錄長度比較短時通常這麼做。2 沒有合適用於 on 或 where 分句的索引字段。3 讓索引欄位和常量值比較,mysql已經計算 基於索引樹 到常量覆蓋了資料表的很大...