我正在做一个任务,我应该比较 SQL Server 中的不同连接方法,即散列连接、合并连接和索引连接。
我很难让 SQL Server 执行索引连接。谁能告诉我如何强制它使用索引连接(使用连接提示或类似方法),或者只是简单地提供一个简单的查询,其中 SQL 服务器使用索引连接方法?
我正在做一个任务,我应该比较 SQL Server 中的不同连接方法,即散列连接、合并连接和索引连接。
我很难让 SQL Server 执行索引连接。谁能告诉我如何强制它使用索引连接(使用连接提示或类似方法),或者只是简单地提供一个简单的查询,其中 SQL 服务器使用索引连接方法?
您只有循环、散列和合并连接 (BOL)。没有索引连接。
克雷格·弗里德曼 ( Craig Friedman) 关于 JOIN 的系列比您需要知道的更多(他是为 SQL Server 设计关系引擎的团队之一)
您可以在直接选择上获得索引提示,但我不确定相同的语法是否可用于连接。
SELECT blah FROM table WITH (INDEX (index_name))
您可以在非 ansi (?) 连接中使用它
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 Server 中找不到这样的术语。
http://en.wikipedia.org/wiki/Join_(SQL)#Join_algorithms
您是否只是在寻找使用索引的嵌套循环,从而导致索引查找?