I am trying to optimise my mySQL query when handling timezones. My database (mySQL) is set to EET time(+02:00) (I will soon move on AWS where I will use UTC), but in any case, our Cakephp implementation has a setting that retrieves the records as UTC. Our timestamp
column his a timestamp
type.
So a 2019-12-19 12:44:27
found in our mySQL (+2), is actually 2019-12-19 10:44:27
(UTC) within our CakePHP implementation.
I have created the following query considering a +04:00
timezone.
$company_timezone ='+04:00';
SELECT company_id, COUNT( timestamp ) AS views, url
FROM behaviour
WHERE company_id = 1
AND CONVERT_TZ(timestamp,'+00:00','{$company_timezone}') >= DATE(CONVERT_TZ(NOW(),'+00:00','{$company_timezone}'))
GROUP BY URL
ORDER BY views
DESC LIMIT 20
However this is quite needy in terms of performance. It takes approx 4-5 seconds. Without the convert_tz
it takes no more than 0.5 sec.
My question is how can I optimise this? Of course, our timestamp
column is indexed, even it doesn't make any sense at the specific query because I use it with convert_tz
.
Thank you
from How to optimize database timezones with convert_tz or any other function
No comments:
Post a Comment