mysql索引是自動使用的么

mysql索引可以自動使用,同時用戶也可以強(qiáng)制使用。MYSQL在創(chuàng)建索引后對索引的使用方式分為兩種:一種是由數(shù)據(jù)庫的查詢優(yōu)化器自動判斷是否使用;另一種是用戶可在寫SQL語句時強(qiáng)制使用索引。

mysql索引是自動使用的么

MYSQL在創(chuàng)建索引后對索引的使用方式分為兩種:其一,由數(shù)據(jù)庫的查詢優(yōu)化器自動判斷是否使用索引;其二,用戶可在寫SQL語句時強(qiáng)制使用索引。

(推薦教程:mysql視頻教程

MYSQL在創(chuàng)建索引后對索引的使用方式分為兩種:

1、由數(shù)據(jù)庫的查詢優(yōu)化器自動判斷是否使用索引;

2、用戶可在寫SQL語句時強(qiáng)制使用索引

下面就兩種索引使用方式進(jìn)行說明

第一種,自動使用索引。

數(shù)據(jù)庫在收到查詢語句后會查看where語句后面的查詢條件,同時查看在表上面有哪些索引,然后根據(jù)查詢條件和索引進(jìn)行匹配。
查詢條件和索引的匹配包括查詢字段與索引字段的匹配和查詢類型和索引類型的匹配。前者很好理解,就是查詢條件的屬性上要建有索引,后者則是說查詢條件必須能夠使用索引,比如等值判斷和范圍查詢可以使用B+樹索引,而hash索引只能適用于等值判斷。

在找到與查詢條件匹配的索引后,就是進(jìn)行代價估計來決定是否使用索引,代價估計主要根據(jù)要訪問的就數(shù)量,一般來說如果通過索引訪問的記錄數(shù)量占全表記錄數(shù)量15%以上,則不會使用索引而是使用全表掃描,因為此時使用索引的代價更大。在大多數(shù)情況下使用索引是會提高效率的。

經(jīng)過優(yōu)化器的判斷,最終會決定是否使用索引。

第二種,強(qiáng)制使用索引,主要是通過SQL語句實現(xiàn)的

select?*?from?table?force?index(PRI)?limit?2;(強(qiáng)制使用主鍵) select?*?from?table?force?index(ziduan1_index)?limit?2;(強(qiáng)制使用索引"ziduan1_index") select?*?from?table?force?index(PRI,ziduan1_index)?limit?2;(強(qiáng)制使用索引"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")

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊15 分享