mysql 添加索引后 在查詢的時候是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")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM