[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод именинников
Bivnikus
Не знаю уже что и делать, есть большая таблица с анкетами (около 500 тыщ строк). У каждого юзера есть дата рождения в формате DATE (YYYY-MM-DD).
И простой вопрос, как узнать на данный момент у кого день рождения сегодня?
Всевозможные вычленения порядкого дня в году и сравнение его с шаблоном отметаю... помещение в функцию поля с датой приведет к повальному перебору всей таблицы...

Тогда решил рубануть топором: WHERE `DATE` IN ('1950-04-30','1951-04-30','1952-04-30','1953-04-30',...,'2010-04-30'). В общем путем несложной математики в скобках простое перечисление разных годов.. и соответственно будет их 50-60. С одной стороны тут возможно применение индекса а значит быстрее будет работать но существуют ли рамки, когда количество передаваемых значений в IN () как то отяготит сервер?



Спустя 14 часов, 41 минута, 26 секунд (1.05.2010 - 04:48) andrey написал(а):
А что запрос: WHERE `DATE`= date(YYYY-MM-DD) не работает?

Спустя 2 часа, 5 минут, 6 секунд (1.05.2010 - 06:54) Bivnikus написал(а):
Работает, но день рождения каждый год вообще то бывает:)

Спустя 2 часа, 47 минут, 1 секунда (1.05.2010 - 09:41) andrey написал(а):
Точно! Я чего-то ступил:) В голову приходит только хранить день, месяц и год в разных полях и сравнивать их отдельно. Тоже конечно изврат, но вроде лучше чем такой большой запрос.

Спустя 38 минут, 48 секунд (1.05.2010 - 10:19) glock18 написал(а):
andrey
сомнительно

Bivnikus
решение хорошее. количество значений в in ограничено, но с 50-100 проблем быть не должно.

Спустя 7 часов, 34 минуты, 53 секунды (1.05.2010 - 17:54) Vulkan написал(а):
А если вывести из БД дату рождения полностью, затем функцией substr обрезать например до года и получится например 17-03 (день и месяц рождения), а потом уже сопоставить с сегодняшней днём и месяцем - DD-MM?

Спустя 15 часов, 53 минуты, 6 секунд (2.05.2010 - 09:47) glock18 написал(а):
Vulkan
внимательнее прочитай тред, ТС явно сказал, что ему нужно использование индекса. твой вариант его не будет использовать
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.