2012-09-19 48 views
0

helo大的mysql數據庫計數不同的性能

我有一個大問題,我有一個大約50M行的表。在這張表中,我有3列:位置,一個人的代碼和日期。它看起來像這樣:

date   person location 

2012-04-07 837592  0 
2012-04-08 892857  6 
2012-04-06 726474  1 
2012-04-03 204857  4 
2012-04-08 516485  9 
2012-04-07 405867  0 

所以一個人可以在同一日期或不同日期在同一地點的不同地點。

我現在的問題是,我需要這樣的查詢:

SELECT COUNT (DISTINCT person) FROM my_table WHERE location = '0';

所以基本上我都數不過來diferent prsons這是對在diferent倍一個地方。 ,如果我以前面描述的方式做這個查詢需要大約20分鐘。

所以我問是否有更快的方式做到這一點?

+0

你需要更好的硬件。 – Petah

+0

你覺得我在這裏需要多少錢,並且記住我每個月可以得到20M行 – tilen

回答

0

試試這個::

SELECT person, COUNT (*) FROM my_table WHERE location = '0' group by person; 

這將提高性能,你可以像使用索引列下。

+0

我試過了,需要花費相同的時間。 加我試過索引,它似乎沒有工作。 – tilen

+0

@tilen:請給我看錶格的構造,以及表格的解釋計劃 –

+0

構造? id> 1;選擇類型>簡單; table> vse,type> ref,可能的鍵> datum_2,key> datum_2,key_len> 607,ref> cons,cons,rows 765,extra> useing where;使用索引 – tilen

0

嘗試這樣

SELECT COUNT (*) FROM my_table WHERE location = '0' GROUP BY person;