1
Мне бы хотелось, чтобы кто-то помог мне понять, почему выполнение сырого SQL-запроса из ActiveRecord (33,6 с) менее эффективно, чем Mysql (14,0 с).ActiveRecord raw sql медленнее, чем MySql
Запрос заключается в следующем:
SELECT
CASE
WHEN
WeekDay(c.collect_date) >=0 AND WeekDay(c.collect_date) <5 THEN 1
ELSE 0
END AS is_business_day,
HOUR(c.collect_date) consumption_hour,
SUM(c.energy),
AVG(c.power)
FROM consumptions c
INNER JOIN devices d ON c.device_id=d.device_id AND d.ftp_id=1
GROUP BY CASE WHEN
WeekDay(c.collect_date) >=0 AND WeekDay(c.collect_date) <5 THEN 1
ELSE 0
END, HOUR(c.collect_date)
И ниже скриншот со временем.
Заранее спасибо!
, потому что вы идете через лишние слои дурачества. Я удивляюсь, что это не займет больше времени. – Drew
Что делает 'consum_tiers'? Типичные запросы Rails занимают намного больше времени, чем обычный SQL, потому что они создают множество объектов. – ahmacleod
@ahmacleod, что область просто выполняет запрос, поэтому это не оправдывает трату слишком много времени. –