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


Индексы. - часть 2


Этот запрос вернет нам список полей, по которым построен индекс, а также порядок полей в индексе.

В том случае, если Вы много работаете с таблицами, вносите большое количество изменений, то может произойти разбалансировка индекса, что приведет к увеличению времени выполнения запросов и, соответственно, производительности в целом. Этого можно избежать, проводя перестройку индексов. Для этого нужно, сначала деактивировав индексы, а потом активировать их.

SELECT 'alter index ' RDB$INDEX_NAME ' INACTIVE;' FROM RDB$INDICES WHERE NOT (RDB$INDEX_NAME STARTING WITH "RDB$");

Этот SQL-запрос даст Вам набор строк-команд для деактивации индексов. Поочередно выбирая получившиеся строки в программе, можно использовать их как команды для деактивизации соответствующего индекса. Если этот запрос выполнить в Windows ISQL, то из области результата можно будет скопировать скрипт, выполняющий те же действия. Следующий запрос дает набор команд для обратной процедуры.

SELECT 'alter index ' RDB$INDEX_NAME ' ACTIVE;' FROM RDB$INDICES WHERE NOT (RDB$INDEX_NAME STARTING WITH "RDB$");

Деактивизация индексов полезна и тогда, когда нужно добавить большое количество записей.

Индекс имеет такой показатель, как "полезность", который используется InterBase-сервером для выбора оптимального плана удовлетворения запросов. Его рекомендуется пересчитывать. Для получения скрипта, делающего это для всех индексов, можно попробовать следующий запрос.

SELECT 'SET STATISTICS INDEX ' RDB$INDEX_NAME ';' FROM RDB$INDICES WHERE NOT (RDB$INDEX_NAME STARTING WITH "RDB$");

| |

 




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