私は10列のテーブルを持って、それは約800万行が含まれています。私はこの表で統計的に仕事をしています。問題は、IDが大きくなり、選択クエリがより遅くなったときに、より多くの時間を実行するときです。ここ
はクエリです:
大量の行のMySQLのクエリの選択を遅く
select * from transaction
where id > :pointer
AND col_a = :col_a
AND col_b >= :from
order by id ASC limit 5000
クエリ内の3つのフィールドの両方がインデックスを作成されています。
各ループの後、新しいポインタ値でクエリを再実行します。ポインタの値は前の結果セットの最後の行のid
です。OFFSET
は使用しません。 最後に、このクエリを使用してスクリプトを実行するのに半分かかりました。
このパフォーマンスの問題を解決するにはどうすればよいですか。
どの言語/環境からクエリを実行していますか? –
LIMITを取り除いて、WHERE句に移動できますか?id>:pointer AND id <=:pointer + 5000? –
注文を避けるチャンスがありますか? – Patrick