У меня есть таблица с более чем 1 миллионом записей. Проблема в том, что запрос занимает слишком много времени, например, 5 минут. «ORDER BY» - моя проблема, но мне нужно выражение в порядке запросов, чтобы получить самые популярные видео. И из-за выражения я не могу создать индекс для него.
Как я могу решить эту проблему?
Thx.
SELECT DISTINCT
`v`.`id`,`v`.`url`, `v`.`title`, `v`.`hits`, `v`.`created`, ROUND((r.likes*100)/(r.likes+r.dislikes),0) AS `vote`
FROM
`videos` AS `v`
INNER JOIN
`votes` AS `r` ON v.id = r.id_video
ORDER BY
(v.hits+((r.likes-r.dislikes)*(r.likes-r.dislikes))/2*v.hits)/DATEDIFF(NOW(),v.created) DESC