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

Материал из GedeminWiki
(Различия между версиями)
Перейти к: навигация, поиск
 
Строка 2: Строка 2:
  
 
===  Ручное восстановление индексов ===
 
===  Ручное восстановление индексов ===
 +
 
Данные SQL-запросы вернут список запросов для восстановления неактивных индексов. Этот список можно скопировать в Script Executive IBExpert'а или выполнить через isql.
 
Данные SQL-запросы вернут список запросов для восстановления неактивных индексов. Этот список можно скопировать в Script Executive IBExpert'а или выполнить через isql.
  
 
Запрос для поиска неактивных индексов по первичным ключам:
 
Запрос для поиска неактивных индексов по первичным ключам:
 +
 
  SELECT  
 
  SELECT  
 
   ' ALTER INDEX ' ||  c.rdb$index_name || ' ACTIVE; '
 
   ' ALTER INDEX ' ||  c.rdb$index_name || ' ACTIVE; '
Строка 13: Строка 15:
 
   r.rdb$index_inactive > 0  
 
   r.rdb$index_inactive > 0  
 
   AND c.rdb$constraint_type = 'PRIMARY KEY'   
 
   AND c.rdb$constraint_type = 'PRIMARY KEY'   
   AND r.rdb$system_flag IS NULL
+
   AND COALESCE(r.rdb$system_flag, 0) = 0
  
 
Запрос для поиска неактивных индексов по внешним ключам:
 
Запрос для поиска неактивных индексов по внешним ключам:
 +
 
  SELECT  
 
  SELECT  
 
   ' ALTER INDEX ' ||  c.rdb$index_name || ' ACTIVE; '
 
   ' ALTER INDEX ' ||  c.rdb$index_name || ' ACTIVE; '
Строка 24: Строка 27:
 
   r.rdb$index_inactive > 0  
 
   r.rdb$index_inactive > 0  
 
   AND c.rdb$constraint_type = 'FOREIGN KEY'   
 
   AND c.rdb$constraint_type = 'FOREIGN KEY'   
   AND r.rdb$system_flag IS NULL
+
   AND COALESCE(r.rdb$system_flag, 0) = 0
  
 
Запрос для поиска оставшихся неактивных индексов:
 
Запрос для поиска оставшихся неактивных индексов:
 +
 
  SELECT  
 
  SELECT  
 
   ' ALTER INDEX ' ||  r.rdb$index_name || ' ACTIVE; '
 
   ' ALTER INDEX ' ||  r.rdb$index_name || ' ACTIVE; '
Строка 33: Строка 37:
 
  WHERE
 
  WHERE
 
   r.rdb$index_inactive > 0   
 
   r.rdb$index_inactive > 0   
   AND r.rdb$system_flag IS NULL
+
   AND COALESCE(r.rdb$system_flag, 0) = 0
  
 
[[Category:База данных]]
 
[[Category:База данных]]

Текущая версия на 12:59, 25 декабря 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 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
Персональные инструменты
Пространства имён

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