【问题标题】:do these facts really hint to use FORCESEEK or not?这些事实真的暗示使用 FORCESEEK 吗?
【发布时间】:2016-05-05 19:42:41
【问题描述】:

以下问题的所述答案是 C 使用 FORCESEEK 提示。但是,要使用提示,我们必须先查看执行计划,对吗?这个问题没有提到任何关于执行计划的内容。问题似乎是“读者阻止作家”。那么,SNAPSHOT ISOLATION 对这种情况没有帮助吗?

问题: 由于针对具有聚集索引的频繁更新表的查询,数据库应用程序运行缓慢。该查询返回四列:包含在非聚集索引中的 where 子句中的三列和一列。优化语句

  • A.向查询添加 HASH 提示
  • 乙。向查询添加 LOOP 提示
  • C.向查询添加 FORCESEEK 提示
  • D.在索引中添加 INCLUDE 子句
  • E.向附加查询添加 FORCESCAN 提示
  • F.添加列存储索引以覆盖查询
  • G.启用针对临时工作负载的优化选项。
  • H.将唯一聚集索引与列存储索引转换。
  • 我。在运行查询之前包含 SET FORCEPLAN ON 语句
  • J.在运行查询之前包含 SET STATISTICS PROFILE ON 语句
  • K.在运行查询之前包含 SET STATISTICS SHOWPLAN_XML ON 语句
  • L.在运行查询之前包含 SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 语句
  • M.在运行查询之前包含 SET TRANSADCTION ISOLATION LEVEL SNAPSHOT 语句
  • N.在运行查询之前包含 SET TRANSACTION ISOLATION LEVEL SERIALIZABLE 语句

【问题讨论】:

  • 这是一个有趣的问题,所以我要投票。
  • 您可以用两种方式解释这个问题:(i) 执行缓慢是由于频繁更新,或者 (ii) 与非聚集索引有关。在现实世界中,我们当然想检查执行计划,并且还知道查询将返回多少条记录。 (C) 不是一个好的答案,因为查询优化器几乎总是擅长它的工作。在没有更多信息的情况下,我会选择 (D),因此非聚集索引会覆盖查询。
  • 不幸的是,写这些问题的人自己似乎并没有真正掌握这个主题。问题中没有足够的信息来得出结论(C)是必需的。我们不知道使用这些列的谓词是否是 sargable 或任何关于基数的东西。
  • 看起来您正在准备一项 MS Cert 考试。给你的好建议:不要依赖某人的问题转储。安装 SQL Server Developer 版本,获取考试目标并学习/尝试每个主题。
  • @lad2025 是的。我正在准备 70-461 考试。我在 SAP+SQL Server 环境中工作。

标签: sql-server tsql


【解决方案1】:

我会选择选项 D。因为它涵盖了表上缺少的非集群索引。

【讨论】:

    猜你喜欢
    • 2019-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多