Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
Уважаемые профи, у меня еще один вопрос. Скажите, для того, чтобы улучшить время выполнения запроса, по каким полям следует создавать индексы? Только по тем, какие участвуют в сравнениях типа a='abc'в разделе WHERE ? А поможет ли времени выполнения построение индексов по столбцам, по которым выполняются агрегирующие функции, например max(b) И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 13:44 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
>И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься? Низя Когда сомневаешься, используй ITW. Строить индексы по полям, которые не учавствуют в выражении Where бессмысленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 13:59 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
Да, кстати, чем быстрее меняются данные в базе, тем чаще нужно запускать ITW. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 14:01 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
Лучше всего сделать так С помощью SQL Profiler записать трассу выполнения всех(или как можно большего количества) типовых запросов , а затем эту трассу предоставить Index Tuning Wizard-у для анализа. Эту операцию необходимо будет проделывать периодически, т.к. на скорость выполнения запроса влияет не только наличие или отсутствие индекса по полю, но и селективность и распределение значений в этом поле(для этого кстати создается статистика). При большом обновлении/добавлении данных индекс может утратить свою актуальность и сервер просто перестанет его использовать. И насчет того, что чем больше индексов, тем лучше - то же самое можно сказать: зачем вам индекс, который никогда не будет использоваться (разве, что получить деньги на апгрейд по причине отсутствия места на диске ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 14:19 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
Что я имел ввиду, насчет не WHERE-индексов. Допустим, у меня есть числовой столбец A Я делаю select max(a) from table Если у меня по a есть индекс, тогда ему не надо будет перелопачивать всю таблицу, а сразу можно будет писать ответ. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 15:01 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
>Я делаю >select max(a) from table >Если у меня по a есть индекс, тогда ему не надо будет перелопачивать всю таблицу, а сразу >можно будет писать ответ. Или я не прав? А теперь представьте, что у вас во всех полях одинаковые значения - поможет ли в этом случае индекс ? Я думаю, что нет. А еще лучше посмотреть план выполнения этого запроса с индексом и без него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2001, 15:16 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
Вчера почитал, что пишут в форуме и запустил Query Analyzer. Там есть команда Perform Index Analysis. Так что гадать не надо, нужен индекс или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2001, 11:20 |
|
||
|
Оптимизация запросов с помощью построения индексов.
|
|||
|---|---|---|---|
|
#18+
2 Сергей С "И вообще - можно ли придерживаться идеологии - чем больше индексов тем лучше, и делать их всегда, когда сомневаешься?" Кроме того, что как уже сказал Glory, индексы занимают место на диске, они еще могут и тормозить работу сервера. Когда выполняется Select, то в каких то случаях индекс будет использоваться (т.е. даст ускорение), а в каких то нет. А вот когда делаются или (на индексированный столбец), Insert, Delete то тут то уж всегда при наличии индекса будут накладные расходы на обновление информации в индексе, причем на каждый индекс (т.е. тормоза). Так что стоит еще подумать над тем какие операции являются преобладающими. Ну а для конкретного случая, как сказал Genady лучше использовать ITW ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2001, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3552&tid=1825794]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 306ms |

| 0 / 0 |
