@RSalo

Как оптимизировать запрос?

Всем привет. Есть такой запрос:
SELECT
   FLOOR(DATEDIFF(CURDATE(), birthday) / 365) as age,
   DATEDIFF(CURDATE(), DATE_ADD(birthday, INTERVAL FLOOR(DATEDIFF(CURDATE(), birthday) / 365) YEAR)) as `interval` 
FROM
   users 
WHERE
   DATEDIFF(CURDATE(), DATE_ADD(birthday, INTERVAL FLOOR(DATEDIFF(CURDATE(), birthday) / 365) YEAR)) > 0 
ORDER BY
   `interval` LIMIT 5;

age - возраст пользователя
interval - сколько дней осталось до дня рождения
where clause - исключить всех, у кого день рождения сегодня
Можно ли его вообще оптимизировать? Или в этом случае ничего особо не сделаешь?
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
Fragster
@Fragster
помогло? отметь решением!
Хранить дату рождения без привязки к году (можно в доп колонке), в where сделать where birthday between date1 and date2
Номер дня года не совсем подходит из-за 29 февраля, а вот хранить как будто бы год рождения, допустим, 2000 - норм.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы