2016-04-09 40 views
-4

我正在處理MySQL數據庫上的超過40M條記錄。該方案如下:處理性能非常低下40M +記錄MySQL表格

由於2臺具有相同的結構包含超過4000萬的價格信息記錄:

表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 
…   …   … 

我我想知道兩個表上有多少個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 ; 

需要半小時才能得到結果,有什麼方法可以提高性能嗎?

+1

[查詢解釋和使用指標的 –

+1

問題缺乏表結構,有問題的存儲引擎,'使用EXPLAIN'和硬件的輸出。性能取決於許多因素,而不僅僅是查詢和記錄數量。硬件扮演着巨大的角色。 –

回答

2

最好的辦法是在product_id上創建索引。

要做到這一點閱讀create index

create index idx_1 on t1 (product_id); 
create index idx_2 on t2 (product_id);