私は平均で約2 - 500万行になるテーブルを持っています。それには、 'instruction_id'と呼ばれる主キー/インデックスと、 'mode'と呼ばれる別のインデックス付きフィールドがあります。今度は 'instruction_id'はプライマリキーなのでもちろんユニークですが、 'mode'は3つの異なる値のうちの1つになります。私はすべての時間を実行するクエリは、これは現在、約25秒かかります速度のためのmysqlインデックス
SELECT * FROM tablename WHERE mode = 'value1' ORDER BY instruction_id LIMIT 50
です(> 1秒が許容できないほど長い)だけ600Kの行は今表が大きくなるにつれて、それは悪くなりますのであります。別の方法でインデックスを作成すると役立つでしょうか?もし私がindex_idとモードを一緒にインデックス付けするとそれが違いになりますか?私がどうにかしてinstruction_idで自然にテーブルを注文できるのであれば、これを別の方法で注文する必要はありませんが、どうすればいいのか分かりません。
実行に時間がかかることは確かですか? 200K行を取得するには時間がかかります。特にサーバーが遠隔の場合はそうです。あなたのクエリのEXPLAIN出力を提供すると、@AdrianCornishの –
も役に立ちます.LIMIT 50に注意してください。 –
@ AlbinSunnanbo良い点 - ORDER BY/LIMITがMySQL自体によってストレージエンジンの外部に適用されているため、ストレージエンジンが200K行を返すことがあります。 –