база mysql 8 движок InnoDb, поле fileDate тип date, партиции на каждый день, индекс на fileDate стоит
запрос
SELECT cdrs.fileDate, count(*)
FROM billing_api.cdrs
WHERE fileDate >= '2024-03-18'
AND fileDate <= '2024-03-24'
GROUP BY fileDate;
время выполнения без count 100ms с count 1 минута 50 сек
результат explain
1, 'SIMPLE', 'cdrs', '...', 'range', 'fileDate', 'fileDate', '3', null, 46678961, 100, 'Using where; Using index'
результат EXPLAIN analyze
-> Group aggregate: count(0) (cost=14066345.63 rows=46678961) (actual time=19262.629..117008.029 rows=7 loops=1)
-> Filter: ((cdrs.fileDate >= DATE'2024-03-18') and (cdrs.fileDate <= DATE'2024-03-24')) (cost=9398449.53 rows=46678961) (actual time=1.198..108947.804 rows=97238448 loops=1)
-> Covering index range scan on cdrs using fileDate over ('2024-03-18' <= fileDate <= '2024-03-24') (cost=9398449.53 rows=46678961) (actual time=1.195..92245.365 rows=97238448 loops=1)