Ручное восстановление индексов

Материал из GedeminWiki
Перейти к: навигация, поиск

Иногда приходится восстанавливать базу без активации индексов. Чтобы вручную не активировать каждый индекс можно сделать следующее.

Ручное восстановление индексов

Данные 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 COALESCE(r.rdb$system_flag, 0) = 0

Запрос для поиска неактивных индексов по внешним ключам:

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 COALESCE(r.rdb$system_flag, 0) = 0

Запрос для поиска оставшихся неактивных индексов:

SELECT 
  ' ALTER INDEX ' ||  r.rdb$index_name || ' ACTIVE; '
FROM 
  rdb$indices r 
WHERE
  r.rdb$index_inactive > 0  
  AND COALESCE(r.rdb$system_flag, 0) = 0
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты