DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 813|回复: 0
打印 上一主题 下一主题

[待整理] SQL Server最佳索引策略

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-13 15:06:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SQL Server为大多数数据类型只提供了两种索引类型——聚簇和非聚簇。SQL Server也支持全文检索索引和XML索引,但这些只对特定的数据类型。

  为你的聚簇索引选择合适的列或列的集合是很关键的。因为表的数据物理上是按聚簇索引列的值排序的。你可以在每一个表上只创建一个单独的聚簇索引。非聚簇索引参照聚簇索引键(数据值)来决定每条记录的物理位置。

  建议你在不经常改变而要经常查询和具有较少数据类型的列上创建聚簇索引。在很多情况下,在序号列上建聚簇索引是最好的选择,因为序号值是被经常查询的——每条记录有一个唯一的序号值——并且它们从来不更新,而且是用SMALLINT,INT或BIGINT数据类型创建的。

  然而一个基于它的序号列的表从来没有被查询过的情况也不罕见。如果这样,要仔细考虑数据一般是怎样获取的,也许是通过一个外键关联到另一个表,或者是通过一个特征列。通常,你可以通过在获取数据时最经常使用的列或列的集合上创建聚簇索引来改进性能。

  一些开发人员喜欢创建复合聚簇索引。这些涉及几列,它们结合起来唯一标识每一条记录。这也许听起来是个很好的做法,因为序号列没有业务意义,但是其它的列——像聘用日期、部门名称和车辆识别号码——立即转化为应用用户可以理解的意思。然而,从性能的角度看,你应该避免采用复合聚簇索引。

  再次,索引越少,SQL Server就能越快的扫描或搜索。你可能发现对于一个小的数据集,复合索引执行的相对要好些。但是随着用户数目的增长,你肯定会遇到问题。

  在你看到建立恰当的索引所到来的性能优势之后,你可能会觉得你的工作结束了。但是随着数据的增加、修改和从数据库中删除,每个索引变得支离破碎。破碎程度越高,你的索引起的作用越低。现在你需要执行一个删除你的索引碎片的计划来保证它们的有效性。

  在SQL Server的前一版本中,从大索引(表具有几百万行记录)中删除碎片经常要求停机。所幸SQL Server2005支持在线索引重建,这使得你的工作相对容易。但是记住,重建索引仍然要求tempdb数据库具有系统资源和空间。如果可能,安排在用户活动最少的时间段做索引维护。

  这篇文章引自数据库性能规划。

  SQL Server数据库设计师和管理员如果想使他们的应用从开始就运行的很好,那么他们有很多选择。为了确保很好的数据库性能,在设计阶段作好的选择是很重要的。在本期的SQL Server INSIDER杂志中,专家Baya Pavliashvili讨论了怎样决定数据库设计,从而优化性能。设计一个数据库包括适当的:

  数据模型
  数据类型
  索引策略
  代码模块
  高可用性选项
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-9-27 17:36 , 耗时 0.092777 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表