рождений.
То что бы он работал нам придется генерить как ты и говорил все даты по годам. (Мы просто не можем откидывать год с дат рождений пользователей в таблице, иначе будет полный перебор таблицы)
Но с другой стороны - если нам нужен диапазон в 30 дней
И мы берём с запасом.. скажем герим даты для 100 лет. Как ты и писал.
Выходит 3 тысячи дат.
Но зато сиквел сервер сможет использовать индекс. ¯\_(ツ)_/¯
Интеретсно. Где проходит грань?
Если индекс это бинарное дерево (что наверное не полная правда)
Сложность поиска по бин дереву - лог(н)
То 3000 * лог (н)
должен быть меньше чем (н) что бы был смысл генерить все даты.
Хм. Для маленьких таблиц перебор быстрее будет
Если будет индекс, а для хоть сколько нибудь большой таблицы это обязательно, то искать можно будет только по префиксу даты, по начальной части даты, определяющей порядок следования дат в сортировке (реализованной индексом) Соответственно от субд надо уметь выделять части данных даты и уметь искать по ним через индекс . Это не все СУБД умеют и не по всем частям можно искать
Да придется генерировать все возможные даты, если СУБД не может искать по нужным частям даты через индекс. 3000 - это не так и много. Норм.
Да индекс это B+tree.
Для маленьких таблиц (без индекса) O( k * N ), где k = число дат N - число людей Для больших таблиц (с индексом) O( k * log N ), где k = число дат N - число людей
Обсуждают сегодня