|
![]() |
#1 |
Ищущий знания...
|
одно меленькое замечание. не надо забывать ещё и про встроенный оптимизатор БД. иногда вроде по всем параметрам индекс подходит под ваш запрос (и по составу, и по порядку), но запрос все равно тормозит. А происходит это потому, что оптимизатор посчитал лучшем (на основе своей статистики) взять другой, менее селективный индекс. Лечится соответственно обновлением статистики.
P.S. я имел опыт такого поведения в ORACLE.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#2 |
Участник
|
...в таком случае индекс назначается дерективой index
или фривольно index hint |
|
![]() |
#3 |
Участник
|
Цитата:
index просто отсортирует выборку в соответствии с полями, указанными в индексе index hint порекомендует оптимизатору использовать именно указанный индекс |
|
![]() |
#4 |
Участник
|
...во как... не знал.
Спасибо за интересную информацию, только непонятно почему сортировка будет выполнена по индексу и при этом сам индекс возможно не будет использован... странно... кроме того при использовании директивы index аксапта ругается (exception) если такого индекса нет... |
|
![]() |
#5 |
Участник
|
Цитата:
Сообщение от ansoft
![]() ...во как... не знал.
Спасибо за интересную информацию, только непонятно почему сортировка будет выполнена по индексу и при этом сам индекс возможно не будет использован... странно... кроме того при использовании директивы index аксапта ругается (exception) если такого индекса нет... К оптимизации запроса это не имеет никакого отношения. Это просто способ сокращенного написания ORDER BY. Соответственно, будет ругань, если такого индекса нет. Написали ключевое слово ORDER BY, а списка полей - нет. А вот "index hint" - это как раз оптимизация. Точнее, рекомендация серверу по принципу "не будет ли любезен, многоуважаемый джин..." ![]() Впрочему, "ручной тюнинг" (оптимизация) запросов при помощи хинтов, как правило, выходит "себе дороже". Лучше не использовать. |
|
![]() |
#6 |
Участник
|
А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() Последний раз редактировалось Skvorcal; 31.08.2010 в 11:41. |
|
![]() |
#7 |
Участник
|
Цитата:
Сообщение от Skvorcal
![]() А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() Индекс1 Поле1 Поле2 Индекс2 Поле2 Поле1 |
|
![]() |
#8 |
Участник
|
Цитата:
Сообщение от Skvorcal
![]() А как лучше поступить в следующей ситуации...
Есть таблица, в таблице куча полей, но 99% запросов фильтруют данные по двум полям. При этом 33% запросов фильтруют данные по одному полю, 33% запросов фильтруют данные по другому полю, а оставшиеся 33% запросов фильтруют данные по двум полям одновременно. В такой ситуации лучше построить два отдельных индекса по каждому полю, или один индекс по двум полям? ![]() и если в нем включено автосоздание индексов... то ничего не делайте. подождите немножко, а потом посмотрите что MS SQL насоздавал. потом примете решение. |
|
![]() |
#9 |
Ищущий знания...
|
так же в БД могут быть отключены хинты, т.е. что базе не посылай, она будет все равно пользоваться своим оптимизатором, игнорируя все указания из вне.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
![]() |
#10 |
Участник
|
Согласен.
|
|
![]() |
#11 |
Ищущий знания...
|
Цитата:
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
Теги |
индекс, как правильно |
|
![]() |
||||
Тема | Ответов | |||
Вопрос по резервированию | 9 | |||
Поле mandatory, а 0 вставить нужно | 5 | |||
вычисляемое поле | 8 | |||
Где взять материалы и еще один конкретный вопрос | 6 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|