`
yaya_wiscom
  • 浏览: 49930 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

简单而有效的SQL优化方式

 
阅读更多

对于像我这样开发经验不是很丰富的人而言,在编码的过程中往往考虑更多的是功能是否实现,而忽略了对SQL语句的优化以及程序整体性能的考虑。这使得在程序部署上线试运行的过程中产生这样或那样的问题。在调试解决这些问题的过程中,不知不觉地增加了开发维护的成本。下面就对几种比较常见的SQL语句的优化方式做一个总结:


1.能用oracle自带函数,或者用他的函数可以实现的效果,尽量用oracle的函数,因为他的函数的算法和实现函数的语言都是效率非常高的,一般情况下比我们写的要高效。

2. sql的关键字都大写,因为oracle 再执行sql时,会把所有的sql 转换为大写来执行

3.select 句子中最好不要出现* ,要写具体的列名,不然 oracle会一次解析每个字段,费时。

4.from 的表,如果是一张或者两张表,把条数最少的放在后面,如果是三张以上,把和其他有交叉的表的放在后面,所谓交叉,就是和其他表有关联的的意思,因为oracle的扫描是从下往上从右往左,这样的结果是可以尽量的少扫描表,

5.where 把可以过滤掉多条数据的条件往后放,以此类推。

6.删除重复记录的最好办法是用rowid

7.使用decode函数减少处理时间

8.用truncate table表明 代替delete from表名,因为第一个会删除表所对应的表空间

9.用where过滤,少用having过滤

10.使用表的别名也可以提高效率

11.用 EXISTS 替代 IN 、用 NOT EXISTS 替代 NOT IN :

12.使用索引来提高查询效率,但是索引建立的时候很有讲究,并不是每个字段都建立,那样反而会降低效率

关于索引的建议:索引是以空间换时间,但是过多的索引会增加INSERT、DELETE、UPDATE的负担,所以不必要的索引尽量删除,可能存在空值的字段尽量不要创建索引并且尽可能创建唯一性索引。

13.用 EXISTS 替换 DISTINCT

14.避免在索引上使用计算那些函数

15.用>= 来代替> ,因为有个确切的边线,可以让oracle跟好的确定边线

16.避免在索引列上用not ,因为这会让索引失效,也要避免使用is null ,is not null 操作

17.用union来代替 or 操作,如果可以的话。

18.用in 代替or ,如果可以的话。

19.用union all 代替 union ,如果可以的话 ,因为union 要去除重复的列,还要排序,费时

20.where句子中把过滤掉数据最的条件放在最后,一次往前罗列,因为oracle的检索顺序是从下往上,从右往左。


一般Web程序20%的性能问题可以由修改算法得到改善;80%的性能问题是因为SQL引起的。

优化SQL的目的是:在有限的资源上已最短的时间返回SQL结果,但不影响整体的数据库性能。

21、单表访问时,尽量使用效率高的索引进行辅助查询;多表访问时,可确定结果集的表尽量优先访问,在执行计划中排在前面。

 

分享到:
评论
1 楼 lpali 2011-08-20  
不错,喜欢总结是个好习惯。。。

相关推荐

    sql优化的几种方法

    ### SQL优化的关键方法 #### 一、选择最有效的表名顺序 在构建SQL查询时,尤其是在涉及多个表的连接查询中,表名的顺序对于查询性能有着重要影响。Oracle数据库的解析器是从右向左处理FROM子句中的表名。为了优化...

    收获,不止SQL优化--抓住SQL的本质1

    - **全书总结**:本书不仅是一本关于SQL优化的技术书籍,更是引导读者进入SQL优化世界的指南。通过丰富的案例、实战经验和深入的技术探讨,帮助读者建立起从宏观到微观的优化思路,并最终达到“爽”的境界。 - **...

    MySQL性能优化 SQL优化方法技巧

    ### MySQL性能优化与SQL优化方法技巧 #### 一、引言 MySQL作为一款广泛使用的开源关系型数据库管理系统,其性能优化对于确保应用系统的稳定性和高效运行至关重要。通过对MySQL的优化,不仅能提升系统的响应速度,还...

    OracleSQL的优化.pdf

    例如,在检索月薪大于 2000 的表达式中,如果 SQL 语句包括第一种情况,优化器会简单地把它转变成第二种。优化器不会简化跨越比较符的表达式,因此我们应该尽量写用常量跟字段比较检索的表达式,而不要将字段置于...

    常见sql 优化的方法

    ### 常见SQL优化的方法:深入解析与实践 在数据库管理与开发中,SQL查询的性能直接影响到系统的响应速度和资源消耗。本文将详细探讨常见的SQL优化方法,特别是针对Oracle和SQL Server这两种广泛使用的数据库管理...

    SQL Server SQL优化

    通过对上述各种SQL优化策略的理解与应用,不仅可以显著提升数据库系统的整体性能,还可以避免因数据库性能瓶颈而导致的业务中断风险。值得注意的是,优化SQL查询是一项长期且持续的工作,需要结合实际应用场景不断...

    大道相通,得鱼忘筌 - 从Oracle的SQL优化到MySQL的SQL优化.pdf

    而在MySQL中,尽管InnoDB实现了行级锁定,其锁机制比Oracle要简单,但在进行SQL优化时,DBA依然需要关注锁相关的性能问题。 最后,在执行层面的细节上,不同数据库系统有着各自独特的要求和限制。例如,在Oracle中...

    收获,不止SQL优化 PDF 带书签 第三部分

    随后《收获,不止SQL优化——抓住SQL的本质》指引大家学会等价改写、过程包优化、高级SQL、分析函数、需求优化这些相关的五大神功。有点头晕,能否少一点套路?淡定,这还是“术”的范畴,依然是教你如何解决问题,...

    SQL优化公开课1

    - **定位方法**:有多种方法可以用于定位性能关键的SQL语句(Top-SQL),其中一种简单有效的方式是使用ASHRPT.SQL生成报表。ASHRPT.SQL是一种专门设计用来展示会话历史报告的脚本,可以帮助快速识别出消耗资源最多的...

    SQL优化实例讲解

    ### SQL优化实例讲解:深入解析与实践技巧 #### 一、如何在Oracle中构建大规模测试数据表 在Oracle数据库环境中,构建大规模数据表是进行性能测试、查询优化等任务的基础。文章首先介绍了如何利用`CTAS`(Create ...

    Oracle 性能优化之 SQL优化

    ### Oracle 性能优化之 SQL优化 #### 一、引言 ...本文介绍的基本原则和技术可以帮助开发者和DBA更好地理解和掌握SQL优化的方法。需要注意的是,每种方法都有其适用场景,实践中应当根据具体情况灵活应用。

    oracle SQL优化技巧

    Oracle SQL 优化技巧 Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM ...

    sql性能优化及实例

    减少数据访问,返回更少数据,减少交互次数,减少服务器CPU开销,利用更多资源。注意:这个是对《sql性能优化分享》的后期修改与补充。下载这个最新的就下载老的了。别下载重复了!!!

    收获,不止SQL优化

    , 现在《收获,不止SQL优化——抓住SQL的本质》开始带你抛除烦恼,走进优化的可乐世界!, 首先教你SQL整体优化、快速优化实施、如何读懂执行计划、如何左右执行计划这四大必杀招。整这些干嘛呢?答案是,传授一个先...

    Oracle 高性能SQL优化

    Oracle数据库的高性能SQL优化是数据库管理员和开发人员关注的关键领域,因为它直接影响到系统的响应时间和整体性能。Oracle性能管理是一个持续的过程,包括主动和被动两个方面。主动性能管理强调在系统设计和开发...

    sql命令优化小窍门

    SQL 命令优化小窍门 SQL 优化是数据库性能优化的关键部分,好的 SQL 命令优化可以大大提高查询速度和数据库性能。在 SQL 命令优化中,索引的建立和使用非常关键。本文总结了一些常用的 SQL 命令优化小窍门,旨在...

    ORACLESQL性能优化.pptx

    在 SQL 优化过程中,需要了解性能管理、性能问题、调整的方法、SQL 优化机制、应用的调整、SQL 语句的处理过程等内容。只有通过深入学习 SQL 语法及各种 SQL 调优技巧,熟悉 SQL 语法、掌握各种内嵌函数、分析函数的...

    落落 Oracle SQL优化与改写培训教程

    大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 50余改写调优案例:覆盖大多数DBA日常工作场景,具有相当大的实用价值 技巧+案例:可以作为DBA的参考手册,也可以作为开发人员编写SQL...

    SQL语句优化,语法优化

    SQL语句优化是数据库性能提升的关键环节,尤其是在大数据量的环境下。优化SQL语句能够显著提高查询速度,减少服务器负载,提升系统整体效率。以下是一些关于SQL语句优化的重要知识点: 1. **选择最有效的表名顺序**...

Global site tag (gtag.js) - Google Analytics