Ручное восстановление индексов
Материал из GedeminWiki
(Различия между версиями)
Flake (обсуждение | вклад) |
Flake (обсуждение | вклад) |
||
| Строка 34: | Строка 34: | ||
r.rdb$index_inactive > 0 | r.rdb$index_inactive > 0 | ||
AND r.rdb$system_flag IS NULL | AND r.rdb$system_flag IS NULL | ||
| + | |||
| + | [[Category:База данных]] | ||
Версия 16:08, 19 декабря 2008
Иногда приходится восстанавливать базу без активации индексов. Чтобы вручную не активировать каждый индекс можно сделать следующее.
Ручное восстановление индексов
Данные SQL-запросы вернут список запросов для восстановления неактивных индексов. Этот список можно скопировать в Script Executive IBExpert'а или выполнить через isql.
Запрос для поиска неактивных индексов по первичным ключам:
SELECT ' ALTER INDEX ' || c.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r JOIN rdb$relation_constraints c ON r.rdb$index_name = c.rdb$index_name WHERE r.rdb$index_inactive > 0 AND c.rdb$constraint_type = 'PRIMARY KEY' AND r.rdb$system_flag IS NULL
Запрос для поиска неактивных индексов по внешним ключам:
SELECT ' ALTER INDEX ' || c.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r JOIN rdb$relation_constraints c ON r.rdb$index_name = c.rdb$index_name WHERE r.rdb$index_inactive > 0 AND c.rdb$constraint_type = 'FOREIGN KEY' AND r.rdb$system_flag IS NULL
Запрос для поиска оставшихся неактивных индексов:
SELECT ' ALTER INDEX ' || r.rdb$index_name || ' ACTIVE; ' FROM rdb$indices r WHERE r.rdb$index_inactive > 0 AND r.rdb$system_flag IS NULL