数据库查询优化方法研究

  • 格式:doc
  • 大小:18.91 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库查询优化方法研究

摘要:随着数据库技术的高速发展,数据库系统已成为现代计算机信息系统和计算机应用系统的基础和核心,信息社会的发展已越来越离不开数据库。该文针对当前使用数据库查询在效率方面遇到的一些问题,主要从SQL语句的优化方面提出一些策略和方法,并提出使用SQL语句时需要注意的事项。

关键词:数据库查询;SQL;索引;优化

中图分类号:TP311文献标识码:A文章编号:

1009-3044(2011)17-4011-02

Studies on the Optimiztion of Database Retrieval

YANG Chang-yao

(Zhanjiang Institute of Education, Zhanjiang 524037, China) Abstract: With the rapid development of Database Technology, Database System has become the foundation and core of modern computer information system and computer application system, as Database is a must in the development of an information society. The current paper targets on some efficiency problems in Database retrieval, offers some strategies and solutions from the perspective of optimizing SQL statement,

and proposes some issues need to be paid attention to when using SQL statement.

Key words: database retrieval; SQL; index; optimization

由于现代信息技术的重要组成部分――数据库技术的飞速发展,使数据库系统作为管理信息系统的核心,成为现代计算机信息系统和计算机应用系统的基础和核心。随着社会发展对信息技术的依赖,特别是网络的不断普及,各种应用业务需要处理的数据量日益增长,各种形式的海量数据应用不断产生。因而提高数据库的查询效率,优化数据库查询操作便成了提高数据库管理系统乃至管理信息系统的关键所在。

1 优化数据库查询方法

数据查询效率,主要受以下因素的影响:首先,机器硬件及网络通讯设备方面,陈旧落后的硬件设备直接影响到查询效率,是造成堵车的重要原因之一;其次是否使用专用的通讯网络,网络带宽也可能是影响数据库查询性能的瓶颈所在;再次,就是要充分利用数据库的引擎,优化数据库的查询。本文主要研究针对第三种情况提高数据库查询效率的策略和方法。

1.1 合理建立索引

1.1.1 索引是数据库中重要的数据结构

其根本目的就是为了提高查询效率,是有效使用数据库

系统的基础,索引建立是否适当是性能好坏的关键。索引可以大大提高查询效率,若索引建少了,查找数据效率就低下,索引建得太多则不利于插入、删除和修改等操作。建立索引的原则主要有以下几个:

1)索引要建立在使用率高的字段上,这样可以提高索引的使用率。

2)建立复合索引时要注意复合索引的顺序要按照使用的频度来确定。

3)在经常需要排序(ORDER BY)和分组(GROUP BY)的字段上建立索引,以加快排序和分组的时间。

4)一般不在数据值较少的字段上建立索引。因为如果数据值少的话有没有索引对查询效率影响并不明显。

5)对于经常存取修改的字段尽量不建立索引,因为这样会带来较大的维护工作。

6)可在主键和外键上建立索引。

1.1.2 索引有助于提高检索性能,但过多或不当的索引也会导致系统性能低效

因为用户在表中每建立一个索引,数据库就要做更多的工作。过多的索引会导致索引碎片,所以我们要合理建立一个索引体系,在衡量是否值得建索引时,可参考以下三个方面:

1)选择性。

选择性指符合查询条件的记录占总记录的百分比。选择性越高,即该值越小,表示越适合建索引,在选择性很低时,通过非聚集索引存取是非常没有效率的存取方式,还不如直接做数据表扫描。

2)数据密度。

数据密度为键值唯一的记录笔数的倒数。数据密度越小,该字段越适合建立索引,平均查询到的记录数=数据密度*总记录数。

3)数据分布。

数据分布表示多笔数据记录组成的方式。表示数据记录是平均散布在一段范围内还是集中在部分区域。如均匀分布,正态分布等,需进一步确定其选择性

1.1.3 创建索引的语法格式

CREATEINDEX 索引名ON 表名(列名)

例如:Create Index index_empid on employees (empid)。

1.2 通过优质SQL语句提高查询效率

访问数据库时要频繁地使用SQL语句,使用索引时可以很有效的提高查询速度,但是如果SQL 语句使用不恰当的话,索引就不能发挥其作用。实践证明,查询语句往往消耗了相当一部分的数据库资源,尤其是对于海量数据,劣质的SQL

语句与优质的SQL语句执行起来效率相差甚至达到上百倍。所以有必要对查询语句进行优化,从而达到提升数据库性能

的目的。下面从以下四个方面提出优化查询语句的方法策略:

1.2.1 不要对数据字段做运算

无运算的字段可以引用索引,有运算的字段将无法引用索引进行优化而需要扫描整个表,很大程度影响数据的查询效率。例如:

SELECT * FROM Order_Details WHERE Quantity+10=110的执行效率就不如

SELECT * FROM Order_Details WHERE Quantity=100

这里指的运算还包括其它的运算,如字符连接等。

1.2.2 不要使用负向查询

负向查询包括NOT、!=、、!、NOTEXISTS、NOTIN、NOTLIKE 等。负向查询不能充分利用索引进行二分查找,需要扫描整张表,所以使用负向查询同样也会使查询效率低下。例如:SELECT * FROM Order_Details WHERE Quantity!=100的执

行效率就不如

SELECT * FROM Order_Details WHERE Quantity>100 OR Quantity99 AND Quantity 1.2.4 使用AND 和OR运算

AND运算符可以充分利用索引,但是使用OR运算符时,要对参与查询的多个字段都要建立索引,否则将可能扫描全表,从而导致查询效率的下降。例如:

SELECT * FROM Orders WHERE CustomerID=‘ISO1308’