Как ускорить обработку запросов к системным таблицам

Источник: http://ibase.ru/devinfo/gspeed.htm

При работе с объектами БД всегда выполняются некие запросы к системным таблицам. Это например, происходит при открытии TTable - вы можете сами убедиться в этом, посмотрев в момент открытия в SQL Monitor. Если объектов в базе данных много, то некоторые подобные запросы начинают выполнятьс очень медленно, т.к. происходит полное сканирование некоторых системных таблиц. Производительность вашей БД можно ускорить (на некоторых операциях до 10 раз) добавив индексы по некоторым полям системных таблиц. Попробуйте сами, применив нижеприведенный скрипт.

примечание: фраза "CREATE INDEX" вообще отсутствует в стандарте ISO/ANSI SQL92, поскольку индексы нужны только для повышения производительности, а в стандарте нет ничего, имеющего отношение к производительности.


/* Добавление индексов на системные таблицы для увеличени производительности. */

CONNECT "MYSERVER:C:/MYDIR/TEST.GDB" USER "SYSDBA" PASSWORD "masterkey";

CREATE INDEX RDB$D_DON ON RDB$DEPENDENCIES (RDB$DEPENDED_ON_NAME);
CREATE INDEX RDB$D_DN ON RDB$DEPENDENCIES (RDB$DEPENDENT_NAME);
CREATE INDEX RDB$D_DNON ON RDB$DEPENDENCIES (RDB$DEPENDENT_NAME, RDB$DEPENDED_ON_NAME);

CREATE INDEX RDB$LF_FS ON RDB$LOG_FILES (RDB$FILE_SEQUENCE);

CREATE INDEX RDB$TR_ID ON RDB$TRANSACTIONS (RDB$TRANSACTION_ID);

CREATE INDEX RDB$TM_TN ON RDB$TRIGGER_MESSAGES (RDB$TRIGGER_NAME);

CREATE INDEX RDB$T_FN ON RDB$TYPES (RDB$FIELD_NAME);

CREATE INDEX RDB$UP_G ON RDB$USER_PRIVILEGES (RDB$GRANTOR);
CREATE INDEX RDB$UP_U ON RDB$USER_PRIVILEGES (RDB$USER);
CREATE INDEX RDB$UP_UG ON RDB$USER_PRIVILEGES (RDB$USER, RDB$GRANTOR);

CREATE INDEX RDB$VR_VN ON RDB$VIEW_RELATIONS (RDB$VIEW_NAME);



(с) 1997 Epsylon Technologies