I have a table which has ~500 GBs of data and have two queries running on it.
-- Query 1 select Count(*) from table where C1 = A -- Query 2 select Count(*) from table where C1 = A and C2 = B
I feel Query 2 execution on whole table is un-necessary as the results are subset of Query 1. Is there any optimized way to first execute Query 1 then run Query 2 on the results of it and finally return Count of both the results.
Advertisement
Answer
SELECT
COUNT(*) AS cnt_1,
SUM(c2 = 'B') AS cnt_2
FROM yourTable
WHERE c1 = 'A';
The index yourTable (c1, c2) will improve.