【问题标题】:How do I force MS SQL Server to perform an index join?如何强制 MS SQL Server 执行索引连接?
【发布时间】:2010-10-12 13:43:45
【问题描述】:

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

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

【问题讨论】:

  • 这个问题是如何在 5 分钟内出现在 google 上的?哇。

标签: sql sql-server join indexing join-hints


【解决方案1】:

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

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); 

【讨论】:

    【解决方案2】:

    您只有Loop, hash and merge joins (BOL)。没有索引连接。

    您需要知道的更多信息,Craig Friedman's series on JOINs(他是为 SQL Server 设计关系引擎的团队之一)

    【讨论】:

      【解决方案3】:

      我在 SQL Server 中找不到此类术语。

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

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

      【讨论】:

        猜你喜欢
        • 2011-05-06
        • 1970-01-01
        • 2010-12-11
        • 2018-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-06
        • 1970-01-01
        相关资源
        最近更新 更多