MS Sql Server 2005+表索引创建可以自动化吗?

时间:2009-03-08 20:50:00

标签: sql-server-2005

我在MSDN杂志上阅读Ian Stirk的Uncover Hidden Data to Optimize Application Performance文章,现在我想知道表格索引创建是否可以自动化,就像Google AppEngine为其BigTable所做的那样。

有任何工具或Sql Server功能可以自动创建表索引吗?

4 个答案:

答案 0 :(得分:3)

不,据我所知,SQL Server中没有启用自动表索引创建的功能。

我不认为这也是一个好主意,因为获得正确的索引将取决于多种因素,几乎没有任何因素可以真正实现自动化。

当然 - 您可以将主键放在任何名为“ID”的列上 - 直到您遇到需要其他内容的主键的情况....

当然,在子表中索引外键列是有意义的 - 但有时,INSERT的额外开销可以抵消索引的增益。

获得正确的索引太依赖于您的实际使用情况和许多动态的使用参数(以及您的设计决策),所以如果任何解决方案能够真正发挥作用,我会感到惊讶良好...

马克

答案 1 :(得分:3)

我不知道任何工具,创建索引的最佳方法是手动检查查询及其执行计划。我认为自动化工具不会像一些优秀的DBA和Profiler一起分析数据一样好。

但是,如果您想自己尝试一下,我建议您开始查看SQL Server中的性能视图。

从函数sys.dm_db_missing_index_columns开始,它应该为您提供一些可以从索引中受益的列的提示。

sys.dm_db_index_usage_stats可以显示哪些索引无用,或者也可以进行优化。

sys.dm_exec_cached_planssys.dm_exec_query_plansys.dm_exec_query_statssys.dm_exec_sql_text应该会向您显示已执行的查询及其执行方式,以及其他表中的信息,您可能会发现哪些需要更多的工作。

实际上,我模糊地回忆起一些可以帮助您分析Profiler中的性能的向导,可能不会自动分析,但可能会将其放入维护计划中。

答案 2 :(得分:2)

我很高兴你喜欢我的文章!

在我通过DMV(www.manning.com/stirk)关于SQL Server性能的新书中,在第10章中,您将看到一个允许您自动创建索引的脚本......还有一个脚本可以删除未使用的索引......你可以看到它们如何一起使用。

由于 伊恩

答案 3 :(得分:0)

我知道这是一个老线程,但我认为有人可能会觉得这很有趣:

http://blogs.msdn.com/b/queryoptteam/archive/2006/06/01/613516.aspx

尽管听起来很棒我注意谨慎 - 索引可能会使系统瘫痪,因为它们可以让它飞起来 - 只有在你知道自己在做什么的情况下才能使用!