3

我正在做一个任务,我应该比较 SQL Server 中的不同连接方法,即散列连接、合并连接和索引连接。

我很难让 SQL Server 执行索引连接。谁能告诉我如何强制它使用索引连接(使用连接提示或类似方法),或者只是简单地提供一个简单的查询,其中 SQL 服务器使用索引连接方法?

4

3 回答 3

5

您只有循环、散列和合并连接 (BOL)。没有索引连接。

克雷格·弗里德曼 ( Craig Friedman) 关于 JOIN 的系列比您需要知道的更多(他是为 SQL Server 设计关系引擎的团队之一)

于 2009-03-11T04:42:17.863 回答
2

您可以在直接选择上获得索引提示,但我不确定相同的语法是否可用于连接。

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); 
于 2009-03-11T00:03:22.840 回答
0

我在 SQL Server 中找不到这样的术语。

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

您是否只是在寻找使用索引的嵌套循环,从而导致索引查找?

于 2009-03-10T23:53:45.670 回答