WEB开发网
开发学院数据库Sybase Sybase SQL Server索引的使用和优化 阅读

Sybase SQL Server索引的使用和优化

 2005-11-21 21:41:16 来源:WEB开发网   
核心提示: 四、索引的选择技术p_detail是住房公积金管理系统中记录个人明细的表,有890000行,Sybase SQL Server索引的使用和优化(3),观察在不同索引下的查询运行效果,测试在C/S环境下进行,此外,尽可能地使用整数为键值,客户机是IBM PII350(内存64M),服务器是DEC Alpha1000A

  四、索引的选择技术

  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)、在选择索引键时,设法选择那些采用小数据类型的列作为键以使每个索

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

上一页  1 2 3 4  下一页

Tags:Sybase SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接