-1

1000 万を超える行と 5 つのフィールド (列) を持つテーブルがあります。にインデックスがありfield_1、次のクエリを実行しています。

CREATE table t2 
SELECT field_1,sum(field_2) AS field_2, 
       sum(field_3) AS field_3,
       sum(field_4) AS field_4 
FROM t1 
GROUP BY field_1;

field_1 のデータ型は varchar(200) で、他のフィールドのデータ型は double です。

このクエリは、1 日以上実行した後でも結果を生成できませんでした。結果をすばやく取得するための提案は役に立ちます。

Web で入手可能な提案に基づいて、c:\xampp\mysql\bin にある my.cnf ファイルに次の変更を加えました: key_buffer = 1G read_buffer_size = 256M read_rnd_buffer_size = 512M SET GLOBAL key_buffer_size=256*1024*1024

誰かが他に何か提案してくれれば、私の仕事は本当に楽になります。

4

1 に答える 1

1

sum 関数を使用しているため、この列の値は数値であると想定しています。10 進数の場合は、データ型を整数または浮動小数点数に変更します。

そのおかげで、MySQL は実行中に数値にキャストする必要がなくなり、数値に対する操作は文字列に対する操作よりもはるかに高速になります。

于 2013-04-14T16:30:34.367 に答える