我們必須與列A,B和C 現在我們想要做如下格式的查詢多列索引(大)表: SELECT * FROM table WHERE (B=... AND C=...) OR (B=... AND C=...) OR ...
因爲有很多表中的行,並且沒有使用索引,查詢的性能非常差。MySQL的 - 跳過列索引
列B,C的索引本來是理想的,遺憾的是它不可用,我們也無法改變它(其他供應商)。 A列有一個我們不感興趣的值。
爲了讓MySQL使用可用的索引,我們在WHERE中添加了一個額外的條件:SELECT * FROM table WHERE (A IN (1, 2, 3, 4, 5, ..., 99, 100)) ((B=... AND C=...) OR (B=... AND C=...))OR ...
。結果是,現在索引已被正確使用,並且查詢性能已經好很多。然而,在查詢中提供A的所有可能的值看起來有點難看。我的感覺是,應該有一個更簡單的方法來做同樣的事情,或者更好的表現。
有沒有辦法強制MySQL使用索引,即使列A沒有在查詢中使用?或者我們已經找到最好的解決方案?
對不起,不是我的回答做了,想說的話,它不會工作!並測試清潔版本 –