Комментарии 21
Может быть вы знаете, как у Postgres обстоят дела с поиском вхождения строки, т.е. если бы вы в вашем примере искали «tain Ne»?
Не слишком круто, но кое-что есть:
www.depesz.com/2011/02/19/waiting-for-9-1-faster-likeilike
Для словарного и префиксного поиска есть лучшие решения:
stackoverflow.com/questions/17633344/is-there-a-way-to-index-in-postgres-for-fast-substring-searches
Впрочем, задача ускорения поиска по подстроке сама по себе не имеет, видимо, эффективного решения.
www.depesz.com/2011/02/19/waiting-for-9-1-faster-likeilike
Для словарного и префиксного поиска есть лучшие решения:
stackoverflow.com/questions/17633344/is-there-a-way-to-index-in-postgres-for-fast-substring-searches
Впрочем, задача ускорения поиска по подстроке сама по себе не имеет, видимо, эффективного решения.
Отличная статья. А можете пояснить, каким образом в узле может закончиться место? Есть какие-то ограничения постгреса на размер узла?
Для того, чтобы выяснить, как работает B-Tree индекс, вовсе не обязательно погружаться по локоть в исходные коды. Ожидал какого-то более существенного срыва покровов.
Следует уточнить, что для индексов используются не то что понимается под B-tree, а B* или B+ -tree. В обычных B-tree информация может храниться в узлах дерева, а в B+ — только в листьях, что дает некоторый простор для оптимизаций.
-Но затем по необъяснимой причине Postgres продолжил сканировать всю базу, сравнивая каждое значение с искомым, хотя оно уже было найдено!
ожидал услышать ответ на этот вопрос, ведь вы покопались в исходниках… а вы покопались в исходниках и открыли америку
ожидал услышать ответ на этот вопрос, ведь вы покопались в исходниках… а вы покопались в исходниках и открыли америку
Ответ мне кажется очевидным, там же стоит сортировка по полю
id
, а это значит, что (поскольку значения name
не уникальны, ведь никто не сказал обратного) даже когда мы нашли запись, удовлетворяющую условию, то это вовсе не значит, что мы нашли запись с минимальным id
(поскольку нам также никто не сказал, что мы просматриваем id
в нужном порядке — по возрастанию).На всякий случай замечу, что это перевод :)
Потому, что запрос выглядит как «дай мне всех пользователей с именем таким-то». Нигде не говорится, что такое имя единственно. Limit применяется уже к результату выборки и на время работы запроса не влияет.
>> Индексы — один из самых мощных инструментов в реляционных базах данных.
Строго говоря индексы к реляционной модели данных никакого отношения не имеют.
Индексы это способ ускорить обработку данных.
Строго говоря индексы к реляционной модели данных никакого отношения не имеют.
Индексы это способ ускорить обработку данных.
Прекрасное издание Жюля Верна с отличными иллюстрациями, простите за офтоп.
Я правильно понял, что «поиск последовательностей» это перевед сочетания «sequential scan»? Если да, то по-русски это называется «последовательный перебор» или «последовательный просмотр»
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
«Под капотом» индексов Postgres