Сообщения

Сообщения за 2022

Многоколоночные индексы в PostgreSQL

Изображение
Индекс может быть определен более чем для одного столбца таблицы. Например, если у вас есть таблица такого вида: CREATE TABLE devtable ( major int, minor int, name varchar ); (скажем, вы храните свой каталог /dev в базе данных...) и часто выдаете такие запросы, как: SELECT name FROM devtable WHERE major = constant AND minor = constant; тогда может быть уместно определить индекс для major и minor столбцов вместе, например: CREATE INDEX devtable_mm_idx ON devtable (major, minor); В настоящее время только типы индексов B-tree, GiST, GIN и BRIN поддерживают индексы с несколькими ключевыми столбцами. Может ли быть несколько ключевых столбцов, не зависит от того, можно ли добавить столбцы INCLUDE в индекс. Индексы могут иметь до 32 столбцов, включая столбцы INCLUDE. Многостолбцовый индекс B-tree можно использовать с условиями запроса, включающими любое подмножество столбцов индекса, но индекс наиболее эффективен, когда существуют ограничения на ведущие (крайние ле

Типы индексов в PostgreSQL

Изображение
PostgreSQL предоставляет несколько типов индексов: B-tree, Hash, GiST, SP-GiST, GIN и BRIN. Каждый тип индекса использует свой алгоритм, который лучше всего подходит для разных типов запросов. По умолчанию команда CREATE INDEX создает индексы B-tree, которые подходят для наиболее распространенных ситуаций. Другие типы индексов выбираются путем написания ключевого слова USING, за которым следует имя типа индекса. Например, чтобы создать хэш-индекс: CREATE INDEX name ON table USING HASH (column); B-Tree (B-дерево) B-деревья могут обрабатывать запросы на равенство и диапазон для данных, которые можно отсортировать в некотором порядке. В частности, планировщик запросов PostgreSQL рассмотрит возможность использования индекса B-дерева всякий раз, когда индексированный столбец участвует в сравнении с использованием одного из следующих операторов: < <= = >= > Конструкции, эквивалентные комбинациям этих операторов, такие как BETWEEN и IN, также могут быть реа