Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизация запросов с помощью построения индексов. / 8 сообщений из 8, страница 1 из 1
21.08.2001, 13:44
    #32012426
Сергей С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
Уважаемые профи, у меня еще один вопрос.
Скажите, для того, чтобы улучшить время выполнения запроса, по каким полям следует создавать индексы?
Только по тем, какие участвуют в сравнениях типа a='abc'в разделе WHERE ?
А поможет ли времени выполнения построение индексов по столбцам, по которым выполняются агрегирующие функции, например max(b)

И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься?

Спасибо.
...
Рейтинг: 0 / 0
21.08.2001, 13:59
    #32012428
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
>И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься?

Низя

Когда сомневаешься, используй ITW. Строить индексы по полям, которые не учавствуют в выражении Where бессмысленно.
...
Рейтинг: 0 / 0
21.08.2001, 14:01
    #32012429
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
Да, кстати, чем быстрее меняются данные в базе, тем чаще нужно запускать ITW.
...
Рейтинг: 0 / 0
21.08.2001, 14:19
    #32012430
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
Лучше всего сделать так
С помощью SQL Profiler записать трассу выполнения всех(или как можно большего количества) типовых запросов , а затем эту трассу предоставить Index Tuning Wizard-у для анализа.

Эту операцию необходимо будет проделывать периодически, т.к. на скорость выполнения запроса влияет не только наличие или отсутствие индекса по полю, но и селективность и распределение значений в этом поле(для этого кстати создается статистика). При большом обновлении/добавлении данных индекс может утратить свою актуальность и сервер просто перестанет его использовать.

И насчет того, что чем больше индексов, тем лучше - то же самое можно сказать: зачем вам индекс, который никогда не будет использоваться (разве, что получить деньги на апгрейд по причине отсутствия места на диске )
...
Рейтинг: 0 / 0
21.08.2001, 15:01
    #32012431
Сергей С
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
Что я имел ввиду, насчет не WHERE-индексов.

Допустим, у меня есть числовой столбец A

Я делаю
select max(a) from table

Если у меня по a есть индекс, тогда ему не надо будет перелопачивать всю таблицу, а сразу можно будет писать ответ. Или я не прав?
...
Рейтинг: 0 / 0
21.08.2001, 15:16
    #32012433
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
>Я делаю
>select max(a) from table

>Если у меня по a есть индекс, тогда ему не надо будет перелопачивать всю таблицу, а сразу
>можно будет писать ответ. Или я не прав?

А теперь представьте, что у вас во всех полях одинаковые значения - поможет ли в этом случае индекс ? Я думаю, что нет.
А еще лучше посмотреть план выполнения этого запроса с индексом и без него.
...
Рейтинг: 0 / 0
22.08.2001, 11:20
    #32012521
V. Motchulsky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
Вчера почитал, что пишут в форуме и запустил Query Analyzer. Там есть команда Perform Index Analysis.
Так что гадать не надо, нужен индекс или нет.
...
Рейтинг: 0 / 0
22.08.2001, 14:12
    #32012553
dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация запросов с помощью построения индексов.
2 Сергей С
"И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься?"
Кроме того, что как уже сказал Glory, индексы занимают место на диске, они еще могут и тормозить работу сервера. Когда выполняется Select, то в каких то случаях индекс будет использоваться (т.е. даст ускорение), а в каких то нет. А вот когда делаются или (на индексированный столбец), Insert, Delete то тут то уж всегда при наличии индекса будут накладные расходы на обновление информации в индексе, причем на каждый индекс (т.е. тормоза). Так что стоит еще подумать над тем какие операции являются преобладающими. Ну а для конкретного случая, как сказал Genady лучше использовать ITW
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Оптимизация запросов с помощью построения индексов. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]