У нас есть таблица под названием table1
...SQL Performance Index
(c1 int indentity,c2 datetime not null,c3 varchar(50) not null,
c4 varchar(50) not null,c5 int not null,c6 int ,c7 int)
on column c1 is primary key(clusterd Index)
on column c2 is index_2(Nonclusterd)
on column c3 is index_2(Nonclusterd)
on column c4 is index_2(Nonclusterd)
on column c5 is index_2(Nonclusterd)
Он содержит 10 миллионов записей. У нас есть несколько процедур, указывающих на «table1» с различными критериями поиска:
select from table1 where c1=blah..and c2= blah.. and c3=blah..
select from table1 where c2=blah..and c3= blah.. and c4=blah..
select from table1 where c1=blah..and c3= blah.. and c5=blah..
select from table1 where c1=blah..
select from table1 where c2=blah..
select from table1 where c3=blah..
select from table1 where c4=blah..
select from table1 where c5=blah..
Что является лучшим способом для создания некластеризованного индекса, кроме выше, или модифицировать существующие индексы, чтобы получить хорошую производительность индекса и сократить время выполнения ?
В ваших примерах запросов все предикаты являются проверками равенства столбца на одно значение. И несколько предикатов всегда сочетаются с оператором И. Я просто подтверждаю, что это так. То, что ваши запросы не используют предикаты LIKE, или операторы OR, или обматывают ссылки столбцов в функциях. – spencer7593
Как насчет предложения select? Всегда одинаковое количество столбцов? – gbn
То, как вы выразили свои индексы, немного сбивает с толку - вы говорите, что у вас есть два индекса (один кластер на c1, один не кластерный на c2, c3, c4, c5) или вы говорите, что у вас есть 5 отдельных индексы (одна кластеризована на c1, одна некластеризована на каждом из c2, c3, c4, c5)? –