APP下载

合理创建索引 实现数据库访问的优化

2013-09-13赵爱涛

石家庄职业技术学院学报 2013年4期
关键词:语句数据库效率

赵爱涛

(石家庄职业技术学院 信息工程系,河北 石家庄 050081)

数据库技术在计算机应用系统开发中占有重要的地位.数据查询的效率直接影响着应用系统的执行效率.索引是对数据库表中一列或多列的值进行排序的一种结构,利用索引可快速访问数据库表中的特定信息,提高数据库的查询效率,从而大幅度提高系统的性能[1].在数据库中,索引分为聚簇索引和非聚簇索引.聚簇索引以数据存放的物理位置为顺序,在一个数据库表中只能建立一个聚簇索引.对于非聚簇索引,它所记录的逻辑顺序与物理顺序间没有必然的联系,索引表中的记录顺序通常与实际记录的物理存储顺序不一致,在一个数据库表中可以建立多个非聚簇索引.在数据库设计中,优化与提高数据的查询效率有很多方面[2],本文从索引的创建方面测试、分析、总结并优化数据查询的方法.

1 数据库的测试环境

数据库服务器硬件配置如下:

CPU为Inter(R)Core(TM)2Duo CPU e7400@2.8GHz.

内存为2GB.

操作系统为Windows Server 2003.

数据库管理系统为Microsoft SQL Server 2008.

2 不同索引方案的查询测试

测试使用某系统中的“产品订货表”,该表已存储10 000 000条记录,结构如表1所示.

表1 测试数据库表结构

在系统的应用中,经常会用到以下三种查询语句:

本文设计了四种索引的建立方案,分别是:

方案P1,仅为id列设置主关键字;

方案P2,在orderdate上设计一个聚簇索引;

方案P3,在place,orderdate,amount上设计组合索引;

方案P4,在orderdate,place,amount上设计组合索引.

对于每个方案,分别测试上述三条查询语句的执行时间,每个方案的每条语句各执行三次,并计算各方案中语句执行的平均时间T(1,2,3)=[(t1+t2+t3)/3],时间的单位为 ms.测试结果见表2-表5.

表2 方案P1查询执行时间

表3 方案P2查询执行时间

表4 方案P3查询执行时间

表5 方案P4查询执行时间

3 测试分析

通过前文的测试,得到表6所示综合分析表和图1所示综合分析图.

表6 综合分析表

图1 综合分析图

在方案P1中只建立了主键索引,而在三个查询句中都没有涉及到主键id列,因此,利用方案P1查询数据时并没有利用到索引;方案P2在orderdate列上建立了一个聚簇索引,记录数据在物理上是按顺序存放的,因此,在查找时,可以先找到这个范围的起止点,并只在此范围内扫描数据,这就避免了大范围扫描,从而提高了数据的查询效率;方案P3是建立在place,orderdate,amount上的组合索引,其前导列是place,但是语句L1和语句L2都没有引用place,在执行时并没有利用到索引,而语句L3引用了place,并且引用的所有列都包含在组合索引中,形成了索引覆盖,因此它的执行效率得到了明显提升;方案P4是建立在orderdate,place,amount上的组合索引,它将orderdate作为前导列,使三个语句都可以利用索引,并且在L1和L3中形成了索引覆盖,因而性能达到了最优.

通过以上的测试与分析可知,在数据库的设计中,索引的设计应建立在对各种查询的分析和预测上.一般来说应注意以下几个方面:(1)有大量重复值且经常有范围查询(between,?>,< ?,> =,< ?=)和order by,group by发生的列,可建立聚簇索引.(2)经常同时存取多列,且每列都含有重复值时可考虑建立组合索引.(3)组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列.(4)聚簇索引要建立在查询时最频繁引用的、最需要排序的字段之上.

4 结束语

创建索引合理,可以有效地提高数据库的查询效率.在一个数据表中虽然可以创建多个索引,但过多的索引会降低系统的维护效率,增大数据的空间需求,降低系统的修改性能[3].在实际应用时,应根据系统的实际情况,权衡修改性能和检索性能的需求,选用合理的索引策略.

[1]孟英杰,曲晶晶.数据库查询优化技术的研究 [J].才智,2011,(25):72.

[2]高爱梅.浅谈数据库查询优化 [J].内蒙古科技与经济,2010,(20):128.

[3]朱东.基于SQL Server的查询优化 [J].信息与电脑:理论版,2011,(11):178.

猜你喜欢

语句数据库效率
提升朗读教学效率的几点思考
重点:语句衔接
数据库
数据库
数据库
数据库
跟踪导练(一)2
“钱”、“事”脱节效率低
如何搞定语句衔接题
提高讲解示范效率的几点感受