`

优化数据库的方法及SQL语句优化的原则

阅读更多

转自 硅谷动力 http://www.enet.com.cn/article/2008/0321/A20080321193099.shtml

优化数据库的方法及SQL语句优化的原则

优化数据库的方法: 

  1、关键字段建立索引。 

  2、使用存储过程,它使SQL变得更加灵活和高效。 

  3、备份数据库和清除垃圾数据。 

  4、SQL语句语法的优化。(可以用Sybase的SQL Expert,可惜我没找到unexpired的序列号) 

  5、清理删除日志。 

  SQL语句优化的原则: 

  ◆1、使用索引来更快地遍历表 

  缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索引设计要建立在对各种查询的分析和预测上。一般来说:①.有大量重复值、且经常有范围查询(between, > ,< ,> =,< =)和order by、group by发生的列,可考虑建立群集索引;②.经常同时存取多列,且每列都含有重复值可考虑建立组合索引;③.组合索引要尽量使关键查询形成索引覆盖,其前导列一定是使用最频繁的列。索引虽有助于提高性能但不是索引越多越好,恰好相反过多的索引会导致系统低效。用户在表中每加进一个索引,维护索引集合就要做相应的更新工作。 

  ◆2、IS NULL 与 IS NOT NULL 

  不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。 

  ◆3、IN和EXISTS 

  EXISTS要远比IN的效率高。里面关系到full table scan和range scan。几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。 

  ◆4、在海量查询时尽量少用格式转换。 

  ◆5、当在SQL SERVER 2000中,如果存储过程只有一个参数,并且是OUTPUT类型的,必须在调用这个存储过程的时候给这个参数一个初始的值,否则会出现调用错误。 

  ◆6、ORDER BY和GROPU BY 

  使用ORDER BY和GROUP BY短语,任何一种索引都有助于SELECT的性能提高。注意如果索引列里面有NULL值,Optimizer将无法优化。 

  ◆7、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。 

  ◆8、IN、OR子句常会使用工作表,使索引失效。如果不产生大量重复值,可以考虑把子句拆开。拆开的子句中应该包含索引。 

  ◆9、SET SHOWPLAN_ALL ON 查看执行方案。DBCC检查数据库数据完整性。 

  DBCC(DataBase Consistency Checker)是一组用于验证 SQL Server 数据库完整性的程序。 

  ◆10、慎用游标 

  在某些必须使用游标的场合,可考虑将符合条件的数据行转入临时表中,再对临时表定义游标进行操作,这样可使性能得到明显提高。 

  总结: 

  优化就是WHERE子句利用了索引,不可优化即发生了表扫描或额外开销。经验证,SQL Server性能的最大改进得益于逻辑的数据库设计、 

  索引设计和查询设计方面。反过来说,最大的性能问题常常是由其中这些相同方面中的不足引起的。其实SQL优化的实质就是在结果正确的前提下,用优化器可以识别的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表搜索的发生。其实SQL的性能优化是一个复杂的过程,以上这些只是在应用层次的一种体现,深入研究还会涉及数据库层的资源配置、网络层的流量控制以及操作系统层的总体设计。
分享到:
评论

相关推荐

    优化数据库的思想及SQL语句优化的原则

    本文将深入探讨优化数据库的思想以及SQL语句优化的原则。 一、优化数据库的思想 1. 数据库设计:良好的数据库设计是优化的基础。应遵循第一范式(1NF)、第二范式(2NF)和第三范式(3NF),减少冗余数据,确保...

    数据库性能优化之SQL语句优化

    为了保证SQL语句优化的有效性,以下几点是必须要遵守的原则: - 数据库访问代码要集中维护,以统一进行性能监控和调整。 - 定期测试数据库性能,并根据性能监控数据调整优化策略。 - 保证优化措施的可回滚性,...

    sql语句优化原则

    SQL语句优化原则是数据库管理和应用开发中的关键环节,它涉及到如何提高查询效率,减少资源消耗,提升系统整体性能。以下是一些针对SQL语句优化的重要原则和方法: 1. **利用索引**:索引是提高查询速度的关键。...

    SQL数据库优化方法

    编写高效的SQL语句,避免全表扫描、减少笛卡尔积、正确使用索引,以及避免过度复杂的联接操作,都是编程实践中应当遵循的原则。同时,使用存储过程和预编译语句可以减少解析和编译的时间,提高执行效率。此外,合理...

    Oracle数据库的SQL语句优化.pdf

    本文将对Oracle数据库中的SQL语句优化进行深入探讨,分析其优化目的和原则,并通过实例介绍一些优化方法。 首先,优化应用程序中SQL语句的必要性十分明显。SQL语句是对数据库中的数据进行操作的唯一途径,应用程序...

    sql 创建数据库表、视图语句

    创建视图的SQL语句是`CREATE VIEW`: ```sql CREATE VIEW 视图名 AS SELECT 列1, 列2, ... FROM 表1 WHERE 条件; ``` 比如,我们可能需要一个只显示激活用户的视图: ```sql CREATE VIEW ActiveUsers AS SELECT ...

    Oracle数据库的SQL语句优化 (1).pdf

    #### SQL语句优化原则 - 减少资源消耗:优化的目的在于减少CPU、内存、磁盘I/O等资源的消耗。 - 缩短响应时间:优化后的语句应能够提高响应速度,缩短用户等待时间。 - 数据访问模式优化:优化数据的读写方式,减少...

    基于Oracle数据库的SQL语句优化 (3).pdf

    文章还提到了建立良好SQL语句时应遵循的一些原则,以及SQL语句优化技术的具体方法和步骤。优化方法包括但不限于使用合适的索引、避免不必要的数据类型转换、选择最优的连接方式、调整子查询的写法以及重写复杂的SQL...

    对医院数据库系统中SQL语句优化的探讨.pdf

    总结来说,SQL语句优化在医院数据库系统中起着至关重要的作用。通过系统化的优化方法,包括详细的需求分析、关系模式的规范化处理以及查询技术的应用,不仅可以提高医院数据库系统的性能,还能确保系统的稳定性和...

    SQL语句优化原则.pdf

    具体来说,有几个重要的SQL语句优化原则需要掌握和理解: 1. 判断空值(NULL)与索引的使用。在数据库中,包含NULL值的列不会被索引。因此,在where子句中使用ISNULL或ISNOTNULL条件时,优化器将不会使用索引,而是...

    SQL语句优化的原则

    以下是对标题“SQL语句优化的原则”及描述中所提及知识点的详细解释: 1. **使用索引来优化查询**: - 非群集索引是默认的索引类型,但在某些情况下,群集索引可能更适合。群集索引决定了数据的物理存储顺序,适用...

    数据库 创建索引 sql oracle

    本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面的知识点。 索引的概念和优点 ---------------- 索引是数据库表中一个或多个列的值的数据结构,用于快速定位和检索数据。创建索引可以提高...

    基于Informix数据库典型低效率SQL语句的分析及优化方法.pdf

    2. SQL语句优化策略 - 索引优化:确保经常用于查询的字段上有合适的索引,可以显著提高查询速度。避免在索引列上使用不等式操作符或函数,因为这可能导致无法使用索引。 - JOIN优化:合理设计JOIN条件,避免全表...

    基于Oracle数据库的SQL语句优化.pdf

    在处理基于Oracle数据库的SQL语句优化时,我们首先需要理解查询在关系型数据库中的重要性以及它如何影响数据库应用程序的性能。查询语句执行效率的提高直接关系到用户体验。由于系统硬件通常难以改变,因此提高SQL...

    SQL Server数据库性能优化之SQL语句篇

    ### SQL Server数据库性能优化之SQL语句篇 #### 一、引言 在现代企业级应用中,数据库性能直接影响到整个系统的响应时间和用户体验。对于基于SQL Server构建的应用来说,优化SQL语句是提升数据库性能的关键步骤之一...

    SQL语句优化在Oracle数据库中的应用.pdf

    SQL语句优化主要包括遵循一定的优化原则和利用Oracle数据库执行原理。 首先,了解SQL语句在Oracle数据库中的执行原理是进行优化的基础。一条SQL语句在Oracle中执行需要经过四个步骤:分析、优化、生成实际执行计划...

    基于Oracle数据库的SQL优化原则和方法.pdf

    【SQL优化原则】 1. **减少I/O操作**:I/O操作是数据库性能的瓶颈之一。优化的目标是尽量减少磁盘读写,避免不必要的数据传输,以减轻CPU的负担。 2. **优化排序操作**:频繁的排序操作会导致额外的计算开销,应当...

    Oracle高效SQL语句原则

    3. 任何在 where 子句中使用 is null 或 is not null 的语句优化器是不允许使用索引的 Oracle database 的优化器在遇到 is null 或 is not null 条件时,不会使用索引,这可能会导致 SQL 语句的执行效率下降。 4....

Global site tag (gtag.js) - Google Analytics