Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以依靠SQL Server tuning advisor生成索引?_Sql_Sql Server_Performance - Fatal编程技术网

是否可以依靠SQL Server tuning advisor生成索引?

是否可以依靠SQL Server tuning advisor生成索引?,sql,sql-server,performance,Sql,Sql Server,Performance,一段时间以来,我一直让it部门分析我的问题并提出建议。这样做有没有潜在的陷阱?手动创建自己的索引会更好吗?调优向导可以很好地处理许多查询,但仍然有很多失败模式。在评估最佳查询计划以及实现该计划所需的索引方面,没有什么比人脑更强大的了。如果有热点,根据我的经验,调整向导通常是无用的。回答起来并不容易,tuning advisor可以使用非常科学的方法创建索引,使您接近您可能想要的内容,但它对其认为需要的内容非常科学,并且不能从实践中进行跳跃式优化 索引创建和性能调整在某种程度上是一门艺术,也是一门

一段时间以来,我一直让it部门分析我的问题并提出建议。这样做有没有潜在的陷阱?手动创建自己的索引会更好吗?

调优向导可以很好地处理许多查询,但仍然有很多失败模式。在评估最佳查询计划以及实现该计划所需的索引方面,没有什么比人脑更强大的了。如果有热点,根据我的经验,调整向导通常是无用的。

回答起来并不容易,tuning advisor可以使用非常科学的方法创建索引,使您接近您可能想要的内容,但它对其认为需要的内容非常科学,并且不能从实践中进行跳跃式优化


索引创建和性能调整在某种程度上是一门艺术,也是一门科学,因此,虽然它为您提供了问题所在的科学起点,但如果不首先审查每个建议并检查它是否真的是我想要的,我永远不会实施它们,或者我是否可以想出一个更好/更合适的方法。

一个人是否应该盲目地相信DTA的建议,并在不考虑影响的情况下实施所有建议?不。我们应该忽略DTA,从零开始分析一切吗?不,DTA(或者不管它后来的化身叫什么)是一种工具。就像其他工具一样,你如何使用它

tunning顾问将根据您提交给它的工作量提供建议。一般来说,DTA建议是高质量和可靠的建议。DTA无法就其他类型的工作负载提供建议,这些工作负载不是为分析重播捕获的。它无法就添加额外索引对存储容量和长期保留策略的影响提供建议。它无法检测到愚蠢的查询,它将建议改进这些愚蠢查询的访问路径,但智能人工分析可能会建议改进查询语法或重新定义需求


对于那些沉浸在一个项目中数月并每天处理项目数据模式和查询的人来说,DTA不应该透露任何惊喜。因此,在这种情况下,可以说这是一个超级工具。但是我想说的是,它仍然应该用于验证它没有提供任何新的建议。

即使您运行advisor,如果您正在将数据库对象放入源代码管理,您将需要编写脚本来创建索引,而不仅仅是为您创建索引。我需要用于源代码控制和部署的脚本,因为我们不允许以任何其他方式将数据库更改部署到生产环境中。虽然您可以在dev上进行更改后编写脚本,但为什么要在创建索引代码如此简单的情况下费事呢

要明确的是,您是接受建议并将其应用于脚本,还是直接将其应用于概要数据库?我不确定您的意思。在指定了我想要的调优选项之后,它会给出一个建议列表(索引、统计信息等)。然后,我进入“操作”菜单,选择“应用建议”。我注意到,他们通常在推荐索引的同时推荐统计数据。当您手动创建索引时,这些是自动创建的吗?通常统计信息是自动创建和自动更新的。一般规则是让引擎自动处理统计数据,例外情况是手动创建统计数据。