2012-01-11 7 views
4

Теперь я ищу вашу помощь для создания индекса на них.SQL Server 2008 R2 Создать индекс

Теперь это моя структура таблицы

table description screen cap

Этот запрос я должен индекс для достижения максимальной производительности.

select PageId 
    from tblPages 
    where UrlChecksumCode = @UrlChecksumCode 
     and PageUrl = @PageUrl 

Теперь я очень плохо знаком с индексами. Я планирую, что когда запрос выполняется, он сначала найдет, что UrlChecksumCode строк, а затем просмотрите столбцы pageurl. Если вы также объясните мне, зачем делать такой индекс, я действительно ценю это. Спасибо.

+0

One это 1000 nvarchar, другой - bigint. Я полагаю, что на индексах должна быть большая разница. – MonsterMMORPG

+0

Не может быть нескольких записей с одинаковым URL-адресом. – MonsterMMORPG

+1

Эндрю Барбер, я полагаю, вы действительно не поняли вопроса. – MonsterMMORPG

ответ

10

один способ, так как ваш PAGEURL длинный (NVARCHAR (1000) и индекс может быть только 900 байт, если вы не используете Включенные столбцы, я создал этот index with included columns

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl) 

или

create index ix_IndexName on tblPages (UrlChecksumCode) INCLUDE(PageUrl, PageID) 

См. Также SQL Server covering indexes

Почему URL-адрес nvarchar вместо varchar ... они могут быть unicode? если не сделать его VARCHAR и сохранить 1/2 размер

+0

На самом деле я не ищу. Индекс должен быть на urlchecksumcode. Может быть, не включать pageurl для индексации? – MonsterMMORPG

+2

+1 Я бы также включил столбец PageId в индекс. –

+0

Порядок столбцов в индексе сначала будет искать urlchecksumcode, прочитайте статью, добавленную мной на мой вопрос – SQLMenace

0

Возможно, вам нужен индекс за (UrlChecksumCode and PageUrl), потому что это то, что он выбирает.

Хотя вы могли бы, при некоторых моделей данных, имеют более высокую производительность, если только индекс по (UrlChecksumCode), потому что PageUrl требует большего текстового индекса

+0

да, но я ищу, как сделать индекс. Я уже знаю об этом. – MonsterMMORPG

1

Создание некластеризованных индексов

 create nonclustered index indexname on tablename(columnname) 

DROP INDEX

 Drop Index index name on tablename 

См все индексы в базе данных

 select * from sys.indexes 
-2

я думаю, что даже мы можем использовать индекс clusterd, как для быстрого поиска как создать clusteredindex SomeName на TABLENAME (имя_столбца1, имя_столбца2, ......) но только один кластерный индекс, мы можем создать для вкладки

Смежные вопросы