【问题标题】:What does "INDEX = PK_DPAGODOCUMENTO" means in this sql query“INDEX = PK_DPAGODOCUMENTO”在这个 sql 查询中是什么意思
【发布时间】:2015-06-08 06:37:18
【问题描述】:

我被另一个程序员留下的这个查询卡住了。我找了又找,但还是没有头绪。如果有人能指导我,我将不胜感激。

查询说

SELECT ... 
FROM dbo.DPAGODOCUMENTO AS T2 (INDEX=PK_DPAGODOCUMENTO) 
RIGHT OUTER JOIN dbo.MDOCUMENTO ... WHERE ...

其中PK_DPAGODOCUMENTO 是桌子上的CONSTRAINT [PK_DPAGODOCUMENTO] PRIMARY KEY CLUSTERED [DPAGODOCUMENTO]。

(INDEX=PK_DPAGODOCUMENTO) 的真正含义是什么,它有什么作用?我们使用的是 MSSQL 2005。

【问题讨论】:

  • 这是一个索引提示。通常是个坏主意(见这里brentozar.com/archive/2013/10/index-hints-helpful-or-harmful)。看起来它在INDEX= 中不太常见。现在告诉我们,您试图用这个查询解决的实际问题是什么?你只是想理解它吗?
  • 非常感谢您的回答,我之前发现了一些关于提示的信息,但在文档中使用了“WITH ...”这个词,这种情况没有,实际上显示了不使用它的错误;我们正在替换一个在过程中调用此查询的程序,是一个旧程序,如果我评论查询优化器为它自己运行的提示,对吗?我会得到同样的结果吗?再次感谢!
  • 如下所述,删除提示不会影响结果。它可能会改变性能(更快或更慢或根本没有变化)。

标签: sql-server tsql sql-server-2005


【解决方案1】:

Table Level Query Hint 覆盖 SQL Server 查询优化器的默认行为并推动它使用特定索引(PK_DPAGODOCUMENTO,在这种情况下为聚集索引)。

【讨论】:

  • 非常感谢您的回答,我之前发现了一些关于提示的信息,但在文档中使用了“WITH ...”这个词,这种情况没有,实际上显示了不使用它的错误;我们正在替换一个在过程中调用此查询的程序,是一个旧程序,如果我评论查询优化器为它自己运行的提示,对吗?我会得到同样的结果吗?再次感谢!
  • 删除查询提示后输出不会改变。只有查询计划发生变化
  • 如果您发现该答案有用,请将其标记为已接受的答案并点赞,以便其他用户知道该问题已得到解答。
猜你喜欢
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2019-02-09
  • 2012-09-14
  • 1970-01-01
相关资源
最近更新 更多