0

我有大约 1 000 000 行的非常简单的表,我想从中检索一些汇总统计信息。不是分析请求,是用户数据。我可以使用 3 个单独的查询来检索数据,每个查询都带有特定的 where 子句。但这将是对我的数据库服务器的三个查询。而且我还可以使用条件 ORDER BY子句进行一次查询。但我在生产的早期从未使用过这样的查询。我应该期待一些麻烦吗?

CREATE TABLE t1 (id INTEGER, fk_1 INTEGER, field_1 INTEGER, field_2 DATETIME);
 ... INSERT INTO t1 ... # 1 000 000 times

SELECT COUNT(*) FROM t1 
WHERE fk_1 = <some_value> 
GROUP BY CASE WHEN (field_1 = 1) THEN 1 ELSE (CASE WHEN field_2 > NOW() THEN 0 ELSE -1 END) END;
4

1 回答 1

5

尝试使用IDin 计数,例如:

SELECT COUNT(ID) FROM t1 
WHERE fk_1 = <some_value> 
GROUP BY CASE WHEN (field_1 = 1) THEN 1 ELSE (CASE WHEN field_2 > NOW() THEN 0 ELSE -1 END) END;
于 2013-07-02T07:19:46.270 回答