科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Sybase SQL Server索引的使用和优化

Sybase SQL Server索引的使用和优化

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡量应用系统成败的标准。

作者:佚名 来源:论坛 2007年10月23日

关键字: SQL Server

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共4页)

四、索引的选择技术

  p_detail是住房公积金管理系统中记录个人明细的表,有890000行,观察在不同索引下的查询运行效果,测试在C/S环境下进行,客户机是IBM PII350(内存64M),服务器是DEC Alpha1000A(内存128M),数据库为SYBASE11.0.3。

  1、 select count(*) from p_detail where op_date>’19990101’ and op_date<’19991231’ and pri_surplus1>300

  2、 select count(*),sum(pri_surplus1) from p_detail where op_date>’19990101’ and pay_month between‘199908’ and’199912’

  不建任何索引查询1 1分15秒

  查询2 1分7秒

  在op_date上建非聚簇索引查询1 57秒

  查询2 57秒

  在op_date上建聚簇索引查询1 <1秒

  查询2 52秒

  在pay_month、op_date、pri_surplus1上建索引查询1 34秒

  查询2 <1秒

  在op_date、pay_month、pri_surplus1上建索引查询1 <1秒

  查询2 <1秒

  从以上查询效果分析,索引的有无,建立方式的不同将会导致不同的查询效果,选择什么样的索引基于用户对数据的查询条件,这些条件体现于where从句和join表达式中。一般来说建立索引的思路是:

  (1)、主键时常作为where子句的条件,应在表的主键列上建立聚簇索引,尤其当经常用它作为连接的时候。

  (2)、有大量重复值且经常有范围查询和排序、分组发生的列,或者非常频繁地被访问的列,可考虑建立聚簇索引。

  (3)、经常同时存取多列,且每列都含有重复值可考虑建立复合索引来覆盖一个或一组查询,并把查询引用最频繁的列作为前导列,如果可能尽量使关键查询形成覆盖查询。

  (4)、如果知道索引键的所有值都是唯一的,那么确保把索引定义成唯一索引。

  (5)、在一个经常做插入操作的表上建索引时,使用fillfactor(填充因子)来减少页分裂,同时提高并发度降低死锁的发生。如果在只读表上建索引,则可以把fillfactor置为100。

  (6)、在选择索引键时,设法选择那些采用小数据类型的列作为键以使每个索

  引页能够容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必须遍历的索引页面降到最小。此外,尽可能地使用整数为键值,因为它能够提供比任何数据类型都快的访问速度。
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章