mysql in查詢過程,in會使用索引嗎?
當(dāng)你source字段唯一性不高,例如你90w數(shù)據(jù),里面source字段來來去去就那么十幾個(gè)值,這種情況下影響結(jié)果集巨大,就會全表掃描。這種情況全表掃描還要快于利用索引,只要理解索引的本質(zhì)不難明白MySQL為何不使用索引。
極端點(diǎn)的情況,90萬的數(shù)據(jù),source只有0和1兩個(gè)值,利用索引要先讀索引文件,然后二分查找,找到對應(yīng)數(shù)據(jù)的數(shù)據(jù)磁盤指針,再根據(jù)讀到的指針再讀磁盤上對應(yīng)的數(shù)據(jù)數(shù)據(jù),影響結(jié)果集45萬。這種情況,和直接全表掃描那個(gè)快顯而易見。
如果你source字段是一個(gè)unique,就會用到索引。
如果你一定要用索引,可以用force index,不過效率不會有改善一般還會更慢就是了。