SQL Server, это правильное использование индекса? - PullRequest
0 голосов
/ 20 апреля 2011

Я пытаюсь справиться с индексами.Учитывая таблицу:

Books
------
ID (PK)
Title
CategoryID (FK)
AuthorID (FK)

Где на моих страницах ASP.net у меня есть веб-страницы, которые будут выбирать книги по автору или по категории, я бы создал индекс на CategoryID Asc, AuthorID asc, если бы хотел улучшитьвремя поиска?

Правильно ли я понял?Если я использую несколько столбцов, как указано выше, это называется clustered index или это что-то еще?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011

Вы должны создать два индекса, один для CategoryID и один для AuthorID.Наличие обоих в одном индексе не то, что вам нужно, если вы ищете один или другой;это понадобится вам, если вы всегда запрашиваете и то и другое одновременно (например, категорию и автора).

Кластерный индекс контролирует физический порядок данных.Обычно, если у вас есть столбец идентификаторов, использовать его в качестве кластерного индекса (который по умолчанию является первичным ключом) просто отлично.

3 голосов
/ 20 апреля 2011

A кластеризованный индекс означает, что данные хранятся в таблице и на диске (и т. Д.) В порядке, указанном индексом. Следствием этого является то, что может существовать только один кластерный индекс.

Индекс CategoryID Asc, AuthorID asc сделает поиск по конкретным категориям быстрее, и поиск по конкретным категориям с конкретными авторами будет идеальным. Но это не идеально для поиска авторов, потому что вам придется искать авторов для каждой категории. В этом случае лучше использовать два отдельных индекса.

2 голосов
/ 20 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...