3

私は2つのテーブルを持っています:

  • formfillidmessagevalue、の列がありますnamefield
  • fieldsnamefieldtypefield、の列がありますoptionsfield

私は主キーを持っていません。リレーションシップは namefield カラム間にあります。

私のクエリは次のとおりです。

select e.namefield,e.typefield,e.optionsfield,b.value,b.id
from fields as e
left join formfill as b on e.namefield = b.namefield and b.id=1011

このクエリは問題ありません。ただし、実行速度は非常に遅い (約 10 秒)。どうすれば速くなりますか?

4

1 に答える 1

1

おそらくクエリプランを投稿する必要があります

http://dev.mysql.com/doc/refman/5.0/en/explain.html

しかし、クエリ実行の速度が遅いということは、

  • インデックスがなく、エンジンがフルスキャンを実行する必要があるため、「=」などの操作があるフィールドにインデックスを追加することをお勧めします。=または<>を使用している場合、インデックスのタイプは「ハッシュ」であり、<または>などの操作にはbtreeです。

  • 右側のテーブルの行数は左側のテーブルの1行よりも10倍以上大きいため、インデックスはあまり役に立ちません。データのパーティション化について検討する必要があります。

于 2012-08-31T16:02:50.040 に答える