|
|
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
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% Вопрос - почему не используется индекс по полю? Если подставить в условие другое поле, по которому есть индекс, то он тоже не используется - ? С уважением Коговюк Игорь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 13:09:19 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
Похоже оптимизатор затыкается на твоем уникальном индексе. Попробуй хинты использовать... Или просто обновить статистику :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 13:17:18 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
Update statistics in_form - не помогло! Шо еще можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 13:45:08 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
Я тоже сталкивался с этим оптимизатор запросов несмотря на то что есть индекс по полю его не использует, хотя статистика обновлена а все потому что при поиске некоторого значения данному значению удовлетворяет не малое количество записей. Т.е. если к примеру при равномерном распределении записей по таблице получается что нужная запись будет присутствовать в каждом экстенте то нет смысла лазить по индексу лучше просто выполнить скан. Затем я решил явно указать оптимизатору использовать нужный индекс и в результате запрос выполнился чуть быстрее. Быстрее потому что на самом деле данные в таблице удовлетворяющие условию поиска были не равномерно раскиданы по таблице, а например в начале или в конце таблицы. Посмотри что показывает dbcc showstatistics. Там в каком то столбце напротив каждого значения указано количество вхождений. Так вот поэкспериментировав я взял некое другое значение для поиска которое реже встречается и он стал использовать индекс. Так что нет ничего страшного в том что он не использует, значит так надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 14:01:11 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
Кстати, поиск по некластерному индексу происходит быстрее если в таблице есть кластерный индекс. Так что ЛЮБАЯ таблица, имеющая индекс ДОЛЖНА иметь кластерный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 16:33:20 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
IMHO он так работает, потому что стоит select * ... Если поставить select <только нужные столбцы> и сделать покрывающий индекс (см. covered index в BOL) - будет летать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 16:52:12 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
а сколько всего записей в таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2002, 17:36:17 |
|
||
|
Не используются индексы в запросах!!
|
|||
|---|---|---|---|
|
#18+
Записей в таблице ~550тысяч. Пробовал даже так - удаляю все индексы, до одного, делаю новый - по одному полю, делаю запрос - результат тотже. update statistics тоже не помогает. Страный сервер, блин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2002, 09:18:13 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32033621&tid=1822194]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
121ms |
get topic data: |
7ms |
get forum data: |
5ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 267ms |
| total: | 467ms |

| 0 / 0 |
