Как выбрать индекс SQL - PullRequest
       3

Как выбрать индекс SQL

6 голосов
/ 03 декабря 2010

Как выбрать индекс sql

У меня есть таблица TabEmp с полями c_ID (primary key) и c_Emp_ID.

Я создал индекс по ней idx_TabEmp (non-clustered) с полями c_ID (primary key) и c_Emp_ID

Я использую оператор выбора

select * from index = idx_TabEmp 

Выдает ошибку

Incorrect syntax near 'index'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are now required. See SQL Server Books Online for proper syntax

Я использую

select * from TabEmp (index = idx_TabEmp)

это работает, но я не уверен, что это правильный способ выбора индекса

Подскажите, пожалуйста, правильный способ запроса индекса?

Ответы [ 2 ]

8 голосов
/ 03 декабря 2010

Это синтаксис для табличной подсказки.

SELECT column_list FROM table_name WITH (INDEX (index_name) [, ...]);

на сервере sql, который, как мне кажется, является вашим делом на основе вашей ошибки.

Вопрос о том, будет ли индекс получен или нет (как на сервере Oracle, так и на сервере SQL), будет зависеть от множества других причин. Как видно из названия, это всего лишь подсказка для оптимизатора. Стоимость запроса с использованием подсказки и без подсказки в конечном итоге станет решающим фактором для оптимизатора.

В большинстве случаев вы не увидите необходимости указывать подсказку. Оптимизатор использовал этот путь доступа, если использование индекса - лучший способ извлечь данные и все метаданные (статистику). ) указывают на то же самое.

8 голосов
/ 03 декабря 2010

Индекс - это то, что оптимизатор "выбирает" автоматически - в идеале вам не нужно принудительно выбирать индекс.

Если вы действительно хотите принудительно выбрать индекс, используйте подсказку индекса

SELECT *
FROM TabEmp
WITH (INDEX(idx_TabEmp))

Кроме того, обратите внимание, что без условий фильтра (т. Е. Без WHERE предложений) индекс не появляется, поскольку вы не ищете конкретные данные - вы выбираете все.

Чтобы провести аналогию с книгой - когда вы читаете полную обложку книги - вам не нужно смотреть на указатель, а только когда вы ищете конкретную страницу, на которую вы смотрите.индекс и найдите то, что вы хотите.

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