1-セカンダリインデックスで使用されます。たとえば、( 、)PRIMARY
のセカンダリインデックスPRIMARY
column1
2-範囲スキャンに一部が使用されるとすぐに、mysqlがインデックスの残りの部分を使用し続けることができないことを知っていますがIN (...,...,...)
、範囲とは見なされませんか?はい、それは範囲ですが、私はmysqlperformanceblog.comで、インデックスの使用によるとIN
は異なる動作をすることを読みました。BETWEEN
誰かがそれらの2つのポイントを確認できますか?または、なぜこれが不可能なのか教えてください。またはそれはどのように可能でしょうか?
アップデート:
リンク:
http ://www.mysqlperformanceblog.com/2006/08/10/using-union-to-implement-loose-index-scan-to-mysql/
http://www.mysqlperformanceblog.com/2006/08/ 14 / mysql-followup-on-union-for-query-optimization-query-profiling / comment-page-1 /#comment-952521
更新2:ネストされたSELECTの例:
SELECT * FROM user_d1 uo
WHERE EXISTS (
SELECT 1 FROM `user_d1` ui
WHERE ui.birthdate BETWEEN '1990-05-04' AND '1991-05-04'
AND ui.id=uo.id
)
ORDER BY uo.timestamp_lastonline DESC
LIMIT 20
したがって、外側SELECT
はtimestamp_lastonline
並べ替えに使用され、内側PK
は外側に接続するかbirthdate
フィルタリングに使用されます。
MySQLが範囲スキャンと並べ替えにインデックスを使用できない場合、このクエリ以外にどのようなオプションがありますか?