Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Почему не используется индекс?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
SQL Server 2012 Dev. Ed.

Пример:

-- drop table tree128
create table tree128(id int primary key, parent_id int, name nvarchar(128), type int)

insert into tree128(id, parent_id, name, type)
select 0,0,N'Root',0
union all
select 1,0,N'node1',1
union all
select 2,0,N'node2',1
union all
select 3,1,N'node3',1
union all
select 4,1,N'node_1_4',2
union all
select 10,1,N'node_1_10',1
union all
select 11,1,N'node_1_11',2
union all
select 12,1,N'node_1_12',1
union all
select 6,2,N'node_2_6',2
union all
select 7,2,N'node_2_7',2
union all
select 8,2,N'node_2_8',1
union all
select 9,2,N'node_2_9',1

-- DROP INDEX FIX_nodes_type ON tree128
CREATE NONCLUSTERED INDEX FIX_nodes_type ON tree128(parent_id,type) WHERE type=2

select * from tree128 where type=2 and parent_id=1 

-- drop table tree128


В плане пишет:

Scanning a clustered index, entirely or only a range.

Почему не хочет использовать фильтрованый индекс?
13 авг 14, 17:35    [16437956]     Ответить | Цитировать Сообщить модератору
 Re: Почему не используется индекс?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Из-за звездочки.
13 авг 14, 17:44    [16437996]     Ответить | Цитировать Сообщить модератору
 Re: Почему не используется индекс?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Владислав Колосов
Из-за звездочки.


точняк! протупил,
спасибо
13 авг 14, 17:47    [16438009]     Ответить | Цитировать Сообщить модератору
 Re: Почему не используется индекс?  [new]
Konst_One
Member

Откуда:
Сообщений: 11538
select name 
from tree128 T 
where parent_id=1 and type=2
OPTION (TABLE HINT(T, INDEX(FIX_nodes_type)))
13 авг 14, 17:50    [16438022]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить