Есть ли какая-то польза для индекса, когда столбец используется только для (хеш) соединения? - PullRequest
1 голос
/ 16 декабря 2011

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

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

1 Ответ

2 голосов
/ 16 декабря 2011

В SQL Server все равно будет предотвращаться Key Lookup.

Если вы JOIN в неиндексированном поле, сервер должен получить значения для этого поля из кластеризованного индекса.

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

Таким образом, по сути вы экономите многоIO в качестве первого шага выполняет фильтрацию на основе очень узкого индекса, а не всей таблицы, загруженной с диска.

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