I have a MySQL table with around 2m rows in it. I'm trying to run the below query and each time it's taken over 5 seconds to get results. I have an index on created_at
column. Below is the EXPLAIN
output.
Is this expected?
Thanks in advance.
SELECT
DATE(created_at) AS grouped_date,
HOUR(created_at) AS grouped_hour,
count(*) AS requests
FROM
`advert_requests`
WHERE
DATE(created_at) BETWEEN '2022-09-09' AND '2022-09-12'
GROUP BY
grouped_date,
grouped_hour
The following recommendations will help you in your SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `advert_requests` ADD INDEX `advert_requests_idx_date_at` (`date_created_at`);
SELECT
DATE(`advert_requests`.created_at) AS grouped_date,
HOUR(`advert_requests`.created_at) AS grouped_hour,
count(*) AS requests
FROM
`advert_requests`
WHERE
`advert_requests`.date_created_at BETWEEN '2022-09-09' AND '2022-09-12'
GROUP BY
grouped_date,
grouped_hour
ORDER BY
NULL