mysql索引可以自動使用,同時使用者也可以強制使用。 MYSQL在建立索引後對索引的使用方式分為兩種:一種是由資料庫的查詢最佳化器自動判斷是否使用;另一種是使用者可在寫入SQL語句時強制使用索引。
MYSQL在建立索引後對索引的使用方式分為兩種:其一,由資料庫的查詢最佳化器自動判斷是否使用索引;其二,使用者可在寫SQL語句時強制使用索引。
(推薦教學:mysql影片教學)
MYSQL在建立索引後對索引的使用方式分為兩種:
#1、由資料庫的查詢最佳化器自動判斷是否使用索引;
2、使用者可在寫SQL語句時強制使用索引
下面就兩種索引使用方式進行說明
第一種,自動使用索引。
資料庫收到查詢語句後會查看where語句後面的查詢條件,同時查看在表上面有哪些索引,然後根據查詢條件和索引進行匹配。
查詢條件和索引的符合包括查詢欄位與索引欄位的符合和查詢類型和索引類型的匹配。前者很好理解,就是查詢條件的屬性上要建有索引,後者則是說查詢條件必須能夠使用索引,例如等值判斷和範圍查詢可以使用B 樹索引,而hash索引只能適用於等值判斷。
在找到與查詢條件相符的索引後,就是進行代價估計來決定是否使用索引,代價估計主要根據要存取的就數量,一般來說如果透過索引存取的記錄數量佔全表記錄數量15%以上,則不會使用索引而是使用全表掃描,因為此時使用索引的代價較大。在大多數情況下使用索引是會提高效率的。
經過優化器的判斷,最後會決定是否使用索引。
第二種,強制使用索引,主要是透過SQL語句實現的
select * from table force index(PRI) limit 2;(强制使用主键) select * from table force index(ziduan1_index) limit 2;(强制使用索引"ziduan1_index") select * from table force index(PRI,ziduan1_index) limit 2;(强制使用索引"PRI和ziduan1_index")
也可以禁止索引的使用
select * from table ignore index(PRI) limit 2;(禁止使用主键) select * from table ignore index(ziduan1_index) limit 2;(禁止使用索引"ziduan1_index") select * from table ignore index(PRI,ziduan1_index) limit 2;(禁止使用索引"PRI,ziduan1_index")
以上是mysql索引是自動使用的麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!