Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование индексов в MS SQL SERVER

34K
04 декабря 2007 года
vladimir_p_b
1 / / 03.12.2007
Возможно ли, и если да, то каким образом заставить MS SQL Server использовать индексы всегда? Как необходимо настроить MS SQL Server?, БД?, индексы?, дабы индекс использовался всегда и не зависел от предполагаемого количества строк в выборке?

На эту формулировку меня натолкнуло использование индексов в учебной БД Northwind.

Подробное описание эксперимента - см. вложение.
9.7K
18 декабря 2007 года
oltzowwa
105 / / 15.02.2007
Как заставить всегда использовать индексы пока не знаю. Но в книге Дэна Тоу "Настройка SQL для профессионалов" на 48 стр написано:

"...Выбор индексного доступа или полного сканирования таблицы зависит от фрагмента таблицы, который будет считан однотабличным запросом. Оптимизатор БД может сделать этот выбор за вас, но нет никакой гарантии, что этот выбор всегда будет сделан правильно. Если SQL-запрос выполняется слишком медленно и требует настройки, вам необходимо решить этот вопрос самостоятельно. Далее перечислены основные диапазоны размеров сканируемых фрагментов таблиц, которые помогут выбрать соответствующую стратегию.

* > 20% строк - Полное сканирование таблицы.
* <0.5% строк - Индексный доступ.
* 0.5% -20% - Необходимо рассмотреть дополнительные условия.....
(далее он приводит пример в каких случаях лучше использовать индексный доступ при размере сканируемых фрагментов таблиц, близким к 20%)
... С другой стороны, если выполнятся доступ к диапазону значений, например, Retirement_Date BETWEEN '2002/01/01' and '2003/01/01', то вы обнаружите целую последовательность отсортированных списков идентификаторов строк для каждой даты из диапазона. Движение считывающей головки диска будет менее упорядоченным и, следовательно, менее эффективным. Самокэширование в этом случае может вовсе не произойти, если время выполнения запроса превышает срок жизни блоков в кэше..."

Таким образом, я хочу сказать, что не всегда оптимально осуществлять выборку строк с использованием индекса.;)
332
21 мая 2008 года
Valiant
416 / / 27.09.2004
Владимир!
Простите меня за глупый вопрос, но откуда сервер должен знать что вам нужно индексировать (т.е. какие поля)?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог