3
在我的測試中,mysql select語句的where子句中包含一個與參數比較的LIKE,不會使用索引。全表掃描完成,性能受損。例如mysql LIKE where子句帶參數不使用索引
set @gp1:= 'BOB%';
select * from quote where quoteNum like @gp1; -- this is slow
如果該值被內聯,則使用該索引。例如
select * from quote where quoteNum like 'BOB%'; -- this is fast
有沒有辦法強制mysql在第一個例子中使用索引?
不起作用。 「set @ gp1:='JDV21501008%'的輸出;解釋select * from引用使用索引(quoteNum),其中quoteNum像@ gp1;」顯示全表掃描。 – 2015-01-21 03:04:20
要清楚,您的示例確實可行,但我需要參數化查詢的解決方案,並且您的解決方案對此無效。 – 2015-01-21 04:04:02
不幸的是,WHERE子句中的變量值不用於選擇索引,而必須使用'USE INDEX'來幫助正確的索引。這在SQL Server中是一樣的。有什麼問題告訴mysql它必須使用哪個索引? – i486 2015-01-26 22:58:28