原查詢:
SELECT * FROM books WHERE name LIKE 'MySQL%';
優化為:
SELECT * FROM books WHERE name >= 'MySQL' AND name < 'MySQM';
原理:字符串按字典序排列,'MySQL' ~ 'MySQM'精確覆蓋所有MySQL*前綴,**可用索引範圍掃描**,避免LIKE通配符導致的全索引掃描。
WHERE varchar_col = 123會觸發列隱式轉數字,**索引失效**。**應用層保證類型一致**,或顯式CAST。MySQL 8.0+嚴格模式下會報警,舊版本靜默失效,極難排查。