2016-04-09 7 views
-4

MySQLデータベースで40Mを超えるレコードを処理しています。次のようなシナリオは次のとおりです。パフォーマンスが非常に遅い処理40M + MySQLテーブルを記録

考えると40Mの価格情報レコードの上に含む同じ構造を持つ2つのテーブル:

表1

product_id price date 
101   5.7  2016/1/1 
102   11.6  2016/1/1 
104   8  2016/1/1 
…   …   … 

表2

product_id price date 
101   5.9  2016/1/2 
103   20.3  2016/1/2 
104   8  2016/1/2 
…   …   … 

I両方のテーブルにどれくらいのproduct_idが存在するかを調べるため、私はbeloを使用していますw検索クエリ:

SELECT count(*) FROM t1 a,t2 b where a.product_id=b.product_id ; 

SELECT count(*) FROM t1 a,t2 b on a.product_id=b.product_id ; 

結果を得るには30分以上かかりますが、パフォーマンスを向上させる方法はありますか?

+1

を読んで説明し、索引の使用は –

+1

質問は 'EXPLAIN'とハードウェアの出力が使用されて、問題のテーブル構造、ストレージエンジンを欠い検索します。パフォーマンスは、クエリとレコードの量だけでなく、多くの要素に依存します。ハードウェアは大きな役割を果たします。 –

答えて

2

product_idにインデックスを作成することをお勧めします。これを行うには

create indexすなわち

create index idx_1 on t1 (product_id); 
create index idx_2 on t2 (product_id); 
関連する問題