色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql in 不使用索引

林雅南2年前13瀏覽0評論

MySQL是一種關(guān)系型數(shù)據(jù)庫管理系統(tǒng),其數(shù)據(jù)存儲在表格中,而索引的作用就是幫助MySQL快速的定位到數(shù)據(jù),提高數(shù)據(jù)的訪問效率。但有些情況下,MySQL是不會使用索引的。以下是一些常見情況:

1. 使用非常大的查詢范圍
如果一個查詢將會返回表中90%以上的數(shù)據(jù)行,MySQL可能會決定掃描整個表,而不是使用索引優(yōu)化查詢。例如,如果表中有1000000行,但一個查詢將返回其中990000行,此時使用索引一般不會有效果。
2. 在大表中使用LIKE查詢
在一個非常大的表中使用LIKE查詢語句會很慢,特別是沒有使用通配符的情況下。比如在表的一個固定字段中查找一個恰好匹配的值,使用LIKE語句可能會阻止MySQL使用索引。
3. 使用自動類型轉(zhuǎn)換
如果查詢中將一個字符型字段與一個數(shù)字相比較,則MySQL必須進(jìn)行自動類型轉(zhuǎn)換。如果將字段類型轉(zhuǎn)換為數(shù)字時發(fā)現(xiàn)有一個函數(shù),將改變字段的值,則 MySQL不能使用索引,因為索引默認(rèn)會檢索原值,而不會檢索轉(zhuǎn)換后的值。例如,查詢一個VARCHAR(10)字段,其中存儲數(shù)字串,MySQL不會將其視為數(shù)字,而將字符串有前導(dǎo)零進(jìn)行處理,此時的處理結(jié)果與字符'65321'可能是相等的,但在進(jìn)行索引掃描時則不同。
4. 對大表進(jìn)行連接操作
如果連接表中的一張或多張表非常大,則使用一定的策略會防止MySQL使用索引,而選擇直接進(jìn)行劃分表掃描。
5. 篩選條件為NULL
當(dāng)查詢中使用了“WHERE column_name IS NULL”這樣的查詢條件,MySQL不會使用索引,即使該字段上有定義索引,原因是MySQL必須掃描特定的記錄位置以找到所需的行。

以上是一些常見使用不使用索引的情況,需要注意這些情況,才能更好的利用索引提高M(jìn)ySQL的查詢效率。