Этот запрос вернет нам список
Этот запрос вернет нам список полей, по которым построен индекс, а также порядок полей в индексе.
В том случае, если Вы много работаете с таблицами, вносите большое количество изменений, то может произойти разбалансировка индекса, что приведет к увеличению времени выполнения запросов и, соответственно, производительности в целом. Этого можно избежать, проводя перестройку индексов. Для этого нужно, сначала деактивировав индексы, а потом активировать их.
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$");