首页 > 解决方案 > 两个 sql 语句的计数(*),其中结果是另一个语句的子集

问题描述

我有一个包含约 500 GB 数据的表,并在其上运行了两个查询。

-- Query 1
select Count(*) from table
where C1 = A

-- Query 2
select Count(*) from table
where C1 = A and C2 = B

我觉得Query 2在整个表上执行是不必要的,因为结果是Query 1. 是否有任何优化的方法来首先执行Query 1然后运行Query 2它的结果,最后返回两个结果的 Count。

标签: mysqlsql

解决方案


SELECT
    COUNT(*) AS cnt_1,
    SUM(c2 = 'B') AS cnt_2
FROM yourTable
WHERE c1 = 'A';

该指数yourTable (c1, c2)将有所改善。


推荐阅读