【发布时间】: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