0
これで
はJSフィドル:MySQLの - 別の属性で問い合わせるときにテーブルのソート効率的
http://sqlfiddle.com/#!9/4c7bc0/7
CREATE TABLE big_table(id INTEGER AUTO_INCREMENT PRIMARY KEY,
user_id INTEGER NOT NULL);
SELECT * FROM big_table WHERE user_id IN (1, 100, 1000)
ORDER BY id DESC LIMIT 10;
として計画されている2番目のクエリ:どこ使用します。インデックスの使用。 filesortの使用
big_tableに数千万の行が含まれていると、ファイル・ポートがパフォーマンスを殺します。
私はどのように速く注文できますか?このクエリの
おそらくこの例のために動作しますが、実際の生活の中で、約1000のuser_id-sが来てそこにできることサブクエリ(または、私がそれを最適化しようとする前に元々結合していたもの) – jeje
2つの推奨インデックスは同じです。テーブルは 'ENGINE = InnoDB'です。これは、InnoDBがPKカラムを各セカンダリインデックスに追加するためです。 –
'IN'に複数の' user_id'がある場合、インデックスは_cannot_を使用してソートを避けることができます。これは、インデックスエントリが 'id'の順序にないためです。しかし、 'ORDER BY user_id、id DESC'はソートを避けると思います。 –