Заметки о системных таблицах InterBase


Индексы.


Индексы - важный объект базы данных. Как Вы уже видели, они используются для построения ограничений типа PRIMARY KEY, FOREIGN KEY и UNIQUE. Но, кроме этих важных индексов, создаваемых SQL сервером автоматически, в базе данных присутствуют и индексы, созданные пользователем. Они употребляются для улучшения доступа к данным, обеспечения сортировок.

Несколькими примерами (далеко не исчерпывающими все возможности) я хочу показать, какую информацию можно почерпнуть из служебных таблиц базы данных касаемо индексов.

select RDB$INDEX_NAME from rdb$indices where rdb$relation_name = "CUSTOMER";

Это выражение вернет Вам список всех индексов, принадлежащих указанной таблице (CUSTOMER). Но в результате будут содержаться все индексы, а не только созданные пользователем. Попробуем выделить только созданные пользователем индексы.

select RDB$INDEX_NAME from rdb$indices where (rdb$relation_name = "CUSTOMER") AND NOT (RDB$INDEX_NAME STARTING WITH "RDB$");

Индексы обладают и другими свойствами, а не только именем. Попробуем узнать некоторые из них.

select RDB$INDEX_NAME, RDB$UNIQUE_FLAG, RDB$INDEX_INACTIVE, RDB$STATISTICS from rdb$indices where (rdb$relation_name = "CUSTOMER") AND NOT (RDB$INDEX_NAME STARTING WITH "RDB$");

Поле RDB$UNIQUE_FLAG определяет, позволяет ли индекс двойные значения. Если это поле имеет значение 1, то двойных значений быть не может. RDB$INDEX_INACTIVE показывает, работает ли индекс в данный момент, т.е. активен ли он. Когда в этом поле стоит значение 0, то индекс активен. RDB$STATISTICS - коэффициент избирательности, используется оптимизатором для выбора стратегии доступа при выполнении запроса.

Всем известно, что индексы строятся по одному или нескольким полям таблицы. Приведем пример того, как можно узнать, на базе каких полей построен индекс. Информация о полях, входящих в индекс содержится в таблице RDB$INDEX_SEGMENTS.

select RDB$FIELD_NAME, RDB$FIELD_POSITION from rdb$index_segments where rdb$index_name = "CUSTREGION" order by rdb$field_position;




Начало  Назад  Вперед



Книжный магазин