0

私はMySQLを使用しており、さまざまなインデックスに保存するデータの正規バージョンとして使用しようとしているデータベースがあります。つまり、主キーによって一連のデータをすばやく取得できる必要がありますが、途中で並べ替える必要もあります。MySQL で効率的にそれを行う方法がわかりません。

私のテーブルは次のようになります。

CREATE TABLE demo.widgets (
    id INT AUTO_INCREMENT,
    -- lots more information I need
    awesomeness INT,
    PRIMARY KEY (id),
    INDEX IDX_AWESOMENESS (awesomeness),
    INDEX IDX_ID_AWESOMENESS (id, awesomeness)
);

そして、私は次の行に沿って何かをしたい:

SELECT *
FROM demo.widgets
WHERE id IN (
    1,
    2,
    3,
    5,
    8,
    13 -- you get the idea
)
ORDER BY awesomeness
LIMIT 50;

しかし、残念ながら、私はこれから良いパフォーマンスを得ることができないようです. 常にファイルソートに頼る必要があります。この設定でパフォーマンスを向上させる方法はありますか? または、別のデータベースを検討する必要がありますか?

4

2 に答える 2

0

これはドキュメントORDER BY Optimizationで説明されています。特に、WHERE句で行を選択するために使用されるインデックスが で使用されるものと異なるORDER BY場合、 ではインデックスを使用できませんORDER BY

于 2013-10-03T23:17:21.047 に答える