Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не используются индексы в запросах!! / 9 сообщений из 9, страница 1 из 1
24.06.2002, 13:09:19
    #32033613
Не используются индексы в запросах!!
Hello, All!
Имеем табличку:
CREATE TABLE [dbo].[IN_FORM] (
[N_BASE] [int] NOT NULL ,
[DAT_FORM] [datetime] NOT NULL ,
[N_FORM] [int] NOT NULL ,
[NOM_KOL] [int] NOT NULL ,
[KOD_STR] [varchar] (10) COLLATE Cyrillic_General_CI_AS NOT NULL ,
[SUM_STR] [numeric](15, 2) NULL ,
[SM_STR] [numeric](15, 2) NULL ,
[OKPO] [varchar] (8) COLLATE Cyrillic_General_CI_AS NULL ,
[OKONH] [int] NULL
) ON [PRIMARY]
CREATE INDEX [IX_IN_FORM_DAT_FORM] ON [dbo].[IN_FORM]([DAT_FORM]) ON [PRIMARY]
CREATE INDEX [IX_IN_FORM_N_BASE] ON [dbo].[IN_FORM]([N_BASE]) ON [PRIMARY]
CREATE INDEX [IX_IN_FORM_KOD_STR] ON [dbo].[IN_FORM]([KOD_STR]) ON [PRIMARY]
CREATE INDEX [IX_IN_FORM_NOM_KOL] ON [dbo].[IN_FORM]([NOM_KOL]) ON [PRIMARY]
CREATE INDEX [IX_IN_FORM_N_FORM] ON [dbo].[IN_FORM]([N_FORM]) ON [PRIMARY]
CREATE UNIQUE INDEX [IX_IN_FORM] ON [dbo].[IN_FORM]([N_BASE], [DAT_FORM], [KOD_STR], [NOM_KOL], [OKONH]) ON [PRIMARY]

Пишем запрос
select * from in_form where kod_str='2701002'
Execution Plan показывает - Table Scan 100%

Вопрос - почему не используется индекс по полю? Если подставить в условие другое поле, по которому есть индекс, то он тоже не используется - ?

С уважением
Коговюк Игорь
...
Рейтинг: 0 / 0
24.06.2002, 13:17:18
    #32033614
gena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
Похоже оптимизатор затыкается на твоем уникальном индексе. Попробуй хинты использовать... Или просто обновить статистику :)
...
Рейтинг: 0 / 0
24.06.2002, 13:45:08
    #32033618
Не используются индексы в запросах!!
Update statistics in_form - не помогло! Шо еще можно сделать?
...
Рейтинг: 0 / 0
24.06.2002, 14:01:11
    #32033621
Алексей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
Я тоже сталкивался с этим оптимизатор запросов несмотря на то что есть индекс по полю его не использует, хотя статистика обновлена а все потому что при поиске некоторого значения данному значению удовлетворяет не малое количество записей. Т.е. если к примеру при равномерном распределении записей по таблице получается что нужная запись будет присутствовать в каждом экстенте то нет смысла лазить по индексу лучше просто выполнить скан. Затем я решил явно указать оптимизатору использовать нужный индекс и в результате запрос выполнился чуть быстрее. Быстрее потому что на самом деле данные в таблице удовлетворяющие условию поиска были не равномерно раскиданы по таблице, а например в начале или в конце таблицы.
Посмотри что показывает dbcc showstatistics. Там в каком то столбце напротив каждого значения указано количество вхождений. Так вот поэкспериментировав я взял некое другое значение для поиска которое реже встречается и он стал использовать индекс. Так что нет ничего страшного в том что он не использует, значит так надо.
...
Рейтинг: 0 / 0
24.06.2002, 16:33:20
    #32033662
gena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
Кстати, поиск по некластерному индексу происходит быстрее если в таблице есть кластерный индекс. Так что ЛЮБАЯ таблица, имеющая индекс ДОЛЖНА иметь кластерный индекс.
...
Рейтинг: 0 / 0
24.06.2002, 16:52:12
    #32033668
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
IMHO он так работает, потому что стоит select * ...

Если поставить select <только нужные столбцы> и сделать покрывающий индекс (см. covered index в BOL) - будет летать.
...
Рейтинг: 0 / 0
24.06.2002, 17:36:17
    #32033675
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
а сколько всего записей в таблице?
...
Рейтинг: 0 / 0
25.06.2002, 09:18:13
    #32033739
Не используются индексы в запросах!!
Записей в таблице ~550тысяч.
Пробовал даже так - удаляю все индексы, до одного, делаю новый - по одному полю, делаю запрос - результат тотже. update statistics тоже не помогает. Страный сервер, блин.
...
Рейтинг: 0 / 0
25.06.2002, 10:47:52
    #32033773
gena
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не используются индексы в запросах!!
Пользуй хинты
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не используются индексы в запросах!! / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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