0

大きな問題があります。約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';

したがって、基本的には、ある場所に異なる時間にいたさまざまな人を数えなければなりません。前述の方法でこれを行うと、クエリには約 20 分かかります。

だから私はこれを行うためのより速い方法があるかどうか尋ねていますか?

4

2 に答える 2

0

これを試して ::

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

これにより、パフォーマンスが向上します。次に、使用する列のインデックス作成などを行うことができます。

于 2012-09-19T11:21:19.283 に答える
0

このようにしてみてください

SELECT COUNT (*) FROM my_table WHERE location = '0' GROUP BY person;
于 2012-09-19T11:22:41.537 に答える