摘要:数据库系统是管理信息系统的核心,是银行、企业、政府等众多部门最为重要的应用。而应用当中,查询操作是重中之重,并且查询操作往往需要花费时间和空间等资源。所以它的效率高低就很大程度上决定了数据库的在整体效率,同时也决定了系统的效率。本文重点围绕数据库的查询优化从需求分析、设计到使用等多方面提出了技术改进和利用。
关键词:数据库;优化;规范;查询
abstract:the database system is the core of management information systems, and also the most important applications in many departments such as banks, enterprises, government and so on. within the application, the query operation is the most important and it requires time, space and other resources.so its efficiency will largely determine the overall efficiency of the database and the efficiency of the system. this article focuses on the database query optimization and introduces some technological improvements and employment of its demand analysis, design and usage.
keywords:database;optimization;specification;query
随着数据库技术的
2.避免或简化排序
应当简化或避免对大型表进行重复的排序。LOCalhosT当能够利用索引自动以适当的次序产生输出时,优化器就避免了排序的步骤。
3.消除对大型表行数据的顺序存取
在嵌套查询中,对表的顺序存取对查询效率可能产生致命的影响。比如采用顺序存取策略,一个嵌套3层的查询,如果每层都查询1000行,那么这个查询就要查询10亿行数据。避免这种情况的主要方法就是对连接的列进行索引。还可以使用并集来避免顺序存取。
4.避免相关子查询
一个列的标签同时在主查询和where子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
5.避免困难的正规表达式
like关键字支持通配符匹配,技术上叫正规表达式。但这种匹配特别耗费时间。例如:select * from customer where zipcode like “98_ _ _”
即使在zipcode字段上建立了索引,在这种情况下也还是采用顺序扫描的方式。如果把语句改为select * from customer where zipcode >“98000”,在执行查询时就会利用索引来查询,显然会大大提高速度。
6.使用临时表加速查询
把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避免多重排序操作,而且在其他方面还能简化优化器的工作。
7.尽量不要使用or
使用or会引起全表扫描,将大大降低查询效率。
8.字段提取要按照“需多少、提多少”的原则
避免“select *”,尽量使用“select 字段1,字段2,字段3........”。实践证明:每少提取一个字段,数据的提取速度就会有相应的提升。提升的速度还要看您舍弃的字段的大小来判断
五、结语
数据库查询优化是一项综合性工作,受到各种各样因素的制约,有些要求往往是彼此矛盾的。因此设计者必须根据实际情况,综合应用上述技术,在基本合理的总体设计的基础上,对数据库查询做一些优化调整,力求最大限度地提高操作效率,减少异常等,满足用户各种各样的要求,实现数据库的查询优化设计。
参考文献:
[1]萨师煊.数据库系统概论[m].北京:高等教育出版社,2000
[2]王能斌.数据库系统原理[m].北京:电子工业出版社,2000
[3]李芳.关系数据库设计的优化技术[j].现代电子技术,2003,9
[4]袁长河.sybase sqlserver性能优化技术初探[j].计算机系统应用,2000,1