Как заставить MS SQL Server выполнить индексное соединение?

Я работаю над заданием, в котором я должен сравнить различные методы соединения в SQL Server, а именно: hash-join, merge-join и index-join.

У меня проблемы с получением SQL Server для выполнения индексного соединения. Может кто-нибудь показать мне, как я могу заставить его использовать индексное соединение (используя подсказку о присоединении или подобное), или просто предоставить простой запрос с объединением, в котором сервер SQL использует метод индексного соединения?

3 ответа

У вас есть только Loop, hash и merge join (BOL). Нет индекса присоединяется.

Больше, чем вам когда-либо нужно было знать, серия Крейга Фридмана о JOINs (он один из команды, которая разработала механизм отношений для SQL Server)

У вас может быть подсказка Index для прямого выбора, но я не уверен, что тот же синтаксис доступен для объединения.

SELECT blah FROM table WITH (INDEX (index_name))

Вы можете использовать это в неанси (?) соединении

SELECT blah FROM TABLE1, TABLE2
WHERE TABLE2.ForiegnKeyID = TABLE1.ID
WITH (INDEX (index_name))

Присоединиться с указанием индекса:

SELECT
    ticket.ticket_id
FROM
    purchased_tickets
JOIN   ticket WITH (INDEX ( ticket_ix3))
    ON ticket.original_ticket_id = purchased_tickets.ticket_id
       AND ticket.paid_for = 1
       AND ticket.punched = 0
WHERE  purchased_tickets.seller_id = @current_user
OPTION (KEEPFIXED PLAN); 

У меня проблемы с поиском такой терминологии в SQL-сервере.

http://en.wikipedia.org/wiki/Join_(SQL)

Вы просто ищете вложенный цикл, который использует индексы, что приводит к поиску индекса?

Другие вопросы по тегам