专家详解SQL Server 2000创建和优化索引

 
   | |

导读:索引SQL Server数据库既是艺术也是技术。我们必须根据设计和编码来选择正确的索引。但是,当测试索引设计时,我们可能发现它对系统性能的提高并没有达到我们的要求……

关键词:SQL Server 2000 SQL Server索引创建 如何优化索引

正在加载数据... 【TechTarget中国原创】索引SQL Server数据库既是艺术也是技术。我们必须根据设计和编码来选择正确的索引。但是,当测试索引设计时,我们可能发现它对系统性能的提高并没有达到我们的要求。我们必须通过学习索引字段、聚簇索引、主键以及索引配置来创建最佳设计的SQL Server索引。 【TechTarget中国原创】

索引SQL Server数据库既是艺术也是技术。我们必须根据设计和编码来选择正确的索引。但是,当测试索引设计时,我们可能发现它对系统性能的提高并没有达到我们的要求。我们必须通过学习索引字段、聚簇索引、主键以及索引配置来创建最佳设计的SQL Server索引。

让我们先来看一些设计索引时的常见问题:

用户如何访问数据?

  • 指定一个值访问一行记录
  • 指定一个值访问多行记录
  • 指定多个值访问多行记录
  • 访问不同范围的记录,如指定一段时间

哪些是常见索引字段?

  • 主键
  • 外键
  • 用于JOIN、WHERE、ORDER BY、GROUP BY、HAVING和其它子句中的字段

应该选择哪种索引?

  • 聚簇索引——这是一种当数据在表格中物理排序时使用的索引。表格不可能有超过一种排序方式。一个很好的候选簇索引是主键、唯一识别每一行的字段,或者支持范围的字段,如一个日期。
  • 非聚簇索引——它是用于基于聚簇索引的有序数据上使用,或者在没有簇索引时单独基于数据使用。一个好的候选非聚簇索引可以是外键,或者在JOIN、WHERE、ORDER BY、GROUP BY、HAVING和其它子句中使用的字段。
  • 不使用索引——在只有固定少数行的表中不使用索引,如查找表,在SQL Server中直接查询会比使用索引更快。

我总是需要使用聚簇索引吗?

  • 不,我们并不“总”得使用它。使用的比例是80:20:虽然不是所有,但大多数环境下我们都必须使用聚簇索引来对数据进行物理排序。典型的,当表中有大量的事务,并且当使用SQL Server来维护聚簇索引消耗过多资源时,我们就不使用它们。虽然如此,我也必须提示一点,我个人见过许多按照惯例不使用聚簇索引的大型表会因为聚簇索引而提升性能。其中实质好处是数据访问时间改进和最小化I/O资源。这是一个伟大的胜利!

我们必须总使用主键吗?

  • 不,我们并不“总”得使用它。根据我的个人经验,90%以上的情况下我们需要一个主键来维持引用完整性,或支持第三方的数据比较工具。

索引中应用有多少个字段呢?

  • 如果不确定确切的索引数,最佳的方法可能就是每个索引用一个字段。
  • 如果索引中的字段匹配多个检索或频繁进行的关键检索中的字段顺序,那么每个索引包含多个字段是有用的。唯一的说明是索引的统计信息只基于第一个字段,而不是整组索引。

索引还有其它什么配置

  • 索引顺序——我们可以创建递增或递减顺序的索引。
  • 填充指数——为每一个索引指定填充因数,以确定索引在创建或重建时在每个索引页预留多少空余空间。
  • 统计信息——保证手动创建索引统计信息,或者允许SQL Server根据数据库大小自动创建和更新它们。
 
查看全文
 
 
 
 
 

SQL Server数据库设计与建模

 
如果把商业现货(COTS)数据建模工具与定制的数据建模应用相比,会发现它们在数据建模方面有很大的差别。
 
使用SQL Server Analysis Services MDX语句,可以很容易地实现像这种具有父子维关系类型的层次结构。
 
SQL Server 2005 中的父子维,解决了如何处理在一个表当中一些记录与本表中其它记录相关联的这样一个常见业务问题。
 
一个范围标记了刻度的一个特定区域,它有助于突出特定的值。例如,在一个间隔为1到10的刻度中,我们可能会考虑添加一个从8到10的范围来突出这些目标数值。
 
现在,双子星项目已经更名为Microsoft PowerPivot,DBA及开发人员可以将目光再转向另外一个SQL Server 2008 R2的功能:Project Madison。
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录