0

3,000 万件近くのレコードを含むテーブルがあり、サイズは 6.6 GB です。そこからいくつかのデータを照会し、group by と order by を使用する必要があります。データのクエリに時間がかかりすぎて、DB への接続が何度も失われました...

キーと複合キーとして必要なすべてのフィールドにインデックスがあります。クエリを高速化するために他に何ができますか?

クエリの例:

select id, max(price), avg(order) from table group by id, date order by id, location.
4

3 に答える 3

0

を使用EXPLAIN queryします。ここで、query はクエリです。例: EXPLAIN select * from table group by id, date order by id, location.

MySQL がクエリを分析し、検索するインデックスを示すテーブルが表示されます。おそらく、十分な (神に十分な) インデックスがありません。

于 2013-06-18T21:11:48.450 に答える
0

私はあなたができるとは思わない。フィルターなし (WHERE 句) と AVG を使用すると、テーブル全体を読み取る必要があります。

私が考えることができる唯一のことは、ID、AVG_ORDER、MAX_PRICE (または必要なもの) を持つ新しいテーブルを作成し、新しい行を挿入/更新するときにトリガーまたはストアド プロシージャを使用して更新することです。

その厄介な平均が必要ない場合は、ID、PRICE インデックスのインデックスが役立つ場合があります。

于 2013-06-19T04:00:23.470 に答える