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 回答