Оптимизиция по индексам. Советы. Часть 2.
Продолжаю тему оптимизации запросов по индексам начатую тут. Кстати синтаксис create index можно посмотреть тут для MS SQL http://msdn.microsoft.com/ru-ru/library/ms188783.aspx, и тут для MySQL http://dev.mysql.com/doc/refman/5.0/en/create-index.html.
Продолжаю советы:
4. Если в запросах к таблице часто фигурирует одинаковый набор полей, то старайтесь создать составной индекс из этих полей.
5. НЕ советую создавать индекс по полю, в котором содержится малое количество уникальных значений.
6. (MS SQL) При операциях с индексом, таких как создание или перестроение, используйте ключ ONLINE = ON, выполняя эти операции в фоне. Таким образом, пользователи смогут безполезненно делать запросы к таблице, а операция перестроения не будет удерживать монопольных блокировок на данных.
Ключ ONLINE доступен в следующих инструкциях языка T-SQL
- CREATE INDEX
- ALTER INDEX
- DROP INDEX
- ALTER TABLE
Например:
ALTER INDEX ALL ON TableName
REBUILD WITH (ONLINE = ON);
7. По возможности создавайте кластерные индексы как можно меньшими, например вместе guid лучше использовать int. Связано это с тем, что некластерные индексы содержат в себе ссылки на кластерный индекс. Таким образом, выбирая большой кластерный индекс, замедляете работу некластерного при обращении к нему. К тому же большие кластерные индексы приводят к увеличению застрат дискового пространства.
Продолжение следует…