深入了解SQL Server中方便的索引技术
2008-09-02 09:59:07 来源:WEB开发网开始应用程序的时候,你应该能够根据一组合理的规则集合识别许多的索引。当应用程序增长及改变的时候,所以对索引进行检查,以便确保没有忽略更好的索引方案。这需要依据应用程序的使用方式,而不是理论知识。同样,还要确保错误的,重复的,或者没有价值的索引被删除。这是一项预防的措施,可以保证你的SQL Server不需要管理不需要的索引。在这篇文章中,我们将会给出有关索引建议、索引创建和索引验证的建议。
常用索引字段
许多数据库管理员和开发人员都遇到的一个常见问题,就是与常被推荐的索引传统字段有关。通常的推荐有:
主键
外键
支持select, insert, update和 delete命令中以下子句的字段:
INNER join
RIGHT | LEFT OUTER join
where
ORDER BY
GROUP BY
HAVING
还有一些额外的关于索引的考虑如下所示:
数据量——当数据行数很少的时候,表扫描可以像穿过索引去访问数据一样快,并且比它成本还要低。
数据的选择性——当数据选择性较低的时候,例如字段中存有相同数据的时候,索引的价值最低。
处理类型——在事务处理系统中,索引应该最小化,以支持尽可能快地插入,与报告系统相比较,以新的方式和不同的方式查询数据可以从扩展的索引中得到好处。
SQL Server 2000 索引中的要与不要
Indexing 问答: 回答常见的索引相关问题
我如何为我的应用程序确定需要的索引?
一旦确定了常用的推荐的索引,就需要开始为你的应用程序决定最佳的索引了。在下面的列表中,SQL Server工具可以帮助你完成这个确定的过程。
ID | 工具 | 目标 | SQL 版本 | 其它资源 |
1 | Profiler | 识别性能糟糕的查询,作为确定潜在索引的方式 | SQL Server 2000 | 跟使用 SQL Server 2005 Profiler踪查询执行结果 |
SQL Server 2005 | SQL Profiler: 特性、功能,以及在 SQL Server 2005中的安装 | |||
2 | 数据库引擎调整顾问(Database Engine Tuning Advisor) | 分析来自Profiler的数据或者实时提供有益索引或者基于分区 | SQL Server 2005 | Database Engine Tuning Adviser: 任何调整你的新 SQL Server 2005 |
3 | 索引调整向导(Index Tuning Wizard) | 分析来自Profiler 的数据或者实时提供有益索引 | SQL Server 2000 | 使用 Index Tuning Wizard的技巧 |
4 | sys.dm_db_missing _index_columns (动态管理视图:Dynamic Management View) | 识别缺少索引的字段 | SQL Server 2005 | sys.dm_db_缺少索引的字段 |
我如何构建我的索引?
一旦确定了通常建议的索引,接下来就应该为你的应用程序决定最好的索引了。下面列表中的SQL Server工具可以帮助你确定这个过程。
ID | 命令/目录 | 举例 |
1 | create INDEX T-SQL 命令(SQL Server 2000) | 创建一个非聚簇的索引 |
create INDEX [IDX_Job_Desc] ON [dbo].[jobs] ([job_desc]) | ||
GO | ||
2 | create INDEX T-SQL 命令(SQL Server 2005) | |
3 | Enterprise Manager (SQL Server 2000) | |
4 | Management Studio (SQL Server 2005) |
我如何验证我的索引是有益的呢?
构建索引是好事,但是它不值得在没有判断你是否从中获得收益在情况下,花费时间去构建和维护索引。一个常见的你不想沦为牺牲品的场景就是,构建了一个只会给部分应用程序带来好处,却给应用程序的其它部分带来干扰的索引。一种可以防止此类事件的方式就是构建一个基线,当数据库发生变更的时候,在数据集合脚本上运行它,然后将结果与基线进行比较。
在你的环境中添加一些方便的索引,可以让你的性能有显著的提升。挑战就是要确保所有的常见的推荐索引都被覆盖了,然后以更加高级的方式继续向前,决定选择哪些索引。如果你花了时间去分析和构建必需的索引,那么记得用可以计量的标准对性能进行验证。
更多精彩
赞助商链接