常見的誤區(qū):
經(jīng)常在網(wǎng)上看到這樣的mysql索引優(yōu)化:使用between代替>和<帖旨,可以避免索引無法使用的情況坡疼,以及in無法使用索引等彬呻。其實這都是有一定誤區(qū)的。首先聲明一個觀點:>,<,in,between等等回梧,都是可以使用索引的废岂。
測試用表:one,數(shù)據(jù)2621440行狱意,版本:5.5.53
當使用“between”時湖苞,卻無法使用索引:
當使用“>”和“<”時,卻又能使用索引:
其他都不一 一截圖了详囤,充分證明财骨。between,>,<這些運算符使用索引藏姐,并不是簡單的一刀切隆箩。
重點來了,其實在這些運算符使用索引的因素是:隨機IO的高低羔杨,說得直白點就是:between的范圍捌臊,>,<的范圍,以及in條件字符串的長度兜材,請看以下截圖:
上面四張圖理澎,前面兩張圖都使用上了索引,但后面僅將范圍增加了1曙寡,就導致索引無法使用糠爬。而且between和“>”“<”的范圍驚人的一致……
至于其它如in這些,由于時間有效举庶,就不一一驗證了执隧。所以,網(wǎng)上的信息不可盡信,還是要自己動手驗證