关系数据库的查询优化策略

关系数据库的查询优化策略

ID:40808946

大小:83.50 KB

页数:15页

时间:2019-08-08

关系数据库的查询优化策略_第1页
关系数据库的查询优化策略_第2页
关系数据库的查询优化策略_第3页
关系数据库的查询优化策略_第4页
关系数据库的查询优化策略_第5页
资源描述:

《关系数据库的查询优化策略》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、关系数据库的查询优化策略1        引言随着计算机应用技术的不断普及和发展,数据库系统正越来越多的走进人们的日常生活。在要求查询结果正确无误的同时,人们越来越关心查询的效率问题。影响查询效率的因素很多,诸如处理器的速度、I/O速度、存储器的容量、操作系统、采取何种的数据库服务系统等。但是对于特定服务器来说查询的效率主要取决于DBA(数据库管理员)所给定的查询语句。2          合理使用索引 数据库服务器对数据进行访问一般采用下面的两种方式:①索引扫描,通过索引访问数据;②表扫描,读表中的所有页。当对一个表进行查询时,如果返回的行数

2、占全表总行数的10%到15%时,使用索引可以极大的优化查询的性能。但是如果查询涉及到全表40%以上的行时,表扫描的效率比使用索引扫描的效率高。在具体使用的过程中,要结合实际的数据库和用户的需求来确定要不要索引以及在什么字段上建立什么样的索引。下面给出一些通用的规则: 1.      在经常用作过滤器或者查询频率较高字段上建立索引;2.      在SQL语句中经常进行GROUPBY、ORDERBY的字段上建立索引;3.      在不同值较少的字段上不必要建立索引,如性别字段;4.      对于经常存取的列避免建立索引; 5.      用于

3、联接的列(主健/外健)建立索引; 6.      在经常存取的多个列上建立复合索引,但要注意复合索引的建立顺序要按照使用的频度来确定。2.1         聚集索引聚集索引是指行的物理顺序与行的索引顺序相同的索引。一个表只能有一个聚集索引。非聚集索引是指定表的逻辑顺序的索引,行的物理顺序与索引顺序不尽相同,每个表可以有多个非聚集索引。缺省情况下建立的是非聚集索引,但是在一些特定的情况下建立非聚集索引会极大的缩短查询的时间。有大量重复值、且经常有范围查询(between,>,<,>=,<=)和orderby、groupby发生的列,可考虑建立聚

4、集索引,而对于频繁修改的列、或者返回小数目的不同值的这些情况应该避免建立聚集索引。使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。比如要返回2004年4月1日到2004年10月1日之间的数据,如果在日期的字段建立了聚集索引,那么数据本来就是按照日期的顺序排列的,只要找到开始和结尾日期的数据就可以了,可以极大的节省时间。而如果使用非聚集索引,必须查到这个时间段中每个日期对应的位置,然后在根据位置存取数据,明显效率很低。显而易见,使用聚集索引的优势很明显。一个表只能按照一个固定的顺序来存储数据,因此,在建立聚集索引的时候

5、一定要和实际查询相结合,看哪个字段对于查询贡献大,而且操作不是很频繁。 索引有助于提高检索性能,但过多或不当的索引也会导致系统低效。因为用户在表中每添加一个索引,数据库就要做更多的工作。过多的索引甚至会导致索引碎片。所以说,我们要合理使用索引体系,特别是对索引的创建,更应精益求精,使数据库的性能得到更好的发挥。   3        书写高效的SQL语句虽然特定的数据库服务器都会对输入的查询语句进行一定的优化操作,但是查询效率主要取决于DBA所书写的SQL语句的好坏。为确保编写的SQL语句有较好的性能,应考虑以下的优化方法: ⑴尽量减少使用负逻

6、辑的操作符和函数,因为它们会导致全表扫描,而且容易出错。可以把含有NOT、<>、!=等负逻辑的条件表达式转化为意思相当的正逻辑。 ⑵字段提取要多少,取多少,避免使用“select*”格式,因为在数据量较大的时候,影响查询性能的最大因素不在与数据的查找,而在于物理I/O的操作。 ⑶避免使用LIKE、EXISTS、IN等标准表达式,他们会使字段上的索引无效,引起全表扫描。尽量减少表的联接操作,不可避免的时候要适当增加一些冗余条件,使参与联接的字段集尽量少。 ⑷OR会使字段上的索引失效,引起全表扫描。下面的例子中,可以把or子句分开,在把结果做加法和

7、算,也可以编写一个存储过程来避免索引的失效。 Selectwork-name,work-deptfromworkwherework-id=’2’orwork-id=’3’; ⑸尽量减少使用联接字段而把所有的条件分列出来用and来进行连接,可以充分的利用在某些字段上已经存在的索引。 selectwork-idfromsalarywherework-salary

8、

9、”

10、

11、work-dept=’$2000teacher’;如果把条件分开来写成下面的格式,系统的查询性能可以得到一定的提高。 selectwork-nofromsalarywherewor

12、k-salary=$2000andwork-dept=’teacher’; ⑹尽量避免使用相关的嵌套查询, 3.1         Where字句的影

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。