Перейти к основному содержимому

pg_index

Каталог pg_index содержит часть информации об индексах. Остальное в основном находится в pg_class.

СтолбецТип данныхОписание
indexrelidoid ссылается на (pg_class.oid)OID записи pg_class для этого индекса
indrelidoid ссылается на (pg_class.oid)OID записи pg_class для таблицы, для которой этот индекс
indnattsint2Общее количество столбцов в индексе (дублирует pg_class.relnatts); это число включает как ключ, так и включенные атрибуты
indnkeyattsint2Количество ключевых столбцов в индексе, не считая включенных столбцов, которые просто хранятся и не участвуют в семантике индекса
indisuniqueboolЕсли true, это уникальный индекс
indnullsnotdistinctboolЭто значение используется только для уникальных индексов. Если false, этот уникальный индекс будет считать нулевые значения отличными (так что индекс может содержать несколько нулевых значений в столбце, поведение PostgreSQL по умолчанию). Если он равен, он будет считать нулевые значения равными (так что индекс может содержать только одно нулевое значение в столбце)
indisprimaryboolЕсли true, этот индекс представляет первичный ключ таблицы (indisunique всегда должен быть true, когда он равен true)
indisexclusionboolЕсли true, этот индекс поддерживает ограничение исключения
indiimmediateboolЕсли true, проверка уникальности выполняется сразу после вставки (не имеет значения, если indisunique не является true)
разгруппированнаяboolЕсли true, таблица в последний раз кластеризовалась по этому индексу
indisvalidboolЕсли true, то индекс в настоящее время действителен для запросов. False означает, что индекс может быть неполным: он все еще должен быть изменен операциями INSERT/UPDATE, но его нельзя безопасно использовать для запросов. Если он уникален, свойство уникальности также не гарантировано истинным
indcheckxminboolЕсли true, запросы не должны использовать индекс, пока xmin этой строки pg_index не окажется ниже их горизонта событий TransactionXmin, потому что таблица может содержать разбитые цепочки HOT с несовместимыми строками, которые они могут видеть
indisreadyboolЕсли true, индекс в данный момент готов к вставкам. False означает, что индекс должен игнорироваться операциями INSERT/UPDATE
indisliveboolЕсли false, индекс удаляется и должен игнорироваться для всех целей (включая решения по безопасности HOT)
indisreplidentboolЕсли true, этот индекс был выбран как "идентичность реплики" с помощью ALTER TABLE... Идентичность реплики с использованием индекса..
indkeyint2vector (ссылается на pg_attribute.attnum)Это массив значений indnatts, которые указывают, какие столбцы таблицы индексирует этот индекс. Например, значение 13 означает, что первый и третий столбцы таблицы составляют записи индекса. Ключевые столбцы предшествуют неключевым (включенным) столбцам. Ноль в этом массиве указывает на то, что соответствующий атрибут индекса является выражением над столбцами таблицы, а не простой ссылкой на столбец
indcollationoidvector (ссылается на pg_collation.oid)Для каждого столбца в ключе индекса (значения indnkeyatts) содержит OID сортировки, которую нужно использовать для индекса, или ноль, если столбец не имеет сортируемого типа данных
indclassoidvector (ссылается на pg_opclass.oid)Для каждого столбца в ключе индекса (значения indnkeyatts) содержит OID используемого класса операторов. Подробнее см. в pg_opclass
inadoptionint2vectorЭто массив значений indnkeyatts, которые хранят биты флагов для каждого столбца. Значение битов определяется методом доступа индекса
indexprspg_node_treeДеревья выражений (в представлении nodeToString()) для атрибутов индекса, которые не являются простыми ссылками на столбцы. Это список с одним элементом для каждой нулевой записи в indkey. Null, если все атрибуты индекса являются простыми ссылками
indpredpg_node_treeДерево выражений (в представлении nodeToString()) для предиката частичного индекса. Нулевой, если не частичный индекс