(1)选择运算

尽可能先做选择运算,这是优化策略中最重要、最基本的一条,选择运算一般会使计算的中间结果大大变小,在对同一表格进行多个选择运算时,选择条件的排列顺序对性能也有很大影响,因为排列顺序不仅影响索引的选取,而且关系到临时表的大小。选择条件的选取极大地影响着查询语句的计算量,因此要提高查询的响应速度,应该将较严格的条件写在前面,较弱的条件放在后面。

(2)投影运算

如果投影运算和选择运算同时进行,并且有若干个投影运算和选择运算都对同一个关系操作,那么可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。

(3)联结运算

联结运算是数据库中常用的运算方法。由于联结运算会产生很多的临时表,尤其是多个表格的联结运算,未经过优化的SOL查询语句会产生巨大的计算量。所以对于连接选择运算,如果可以由嵌套SQL语句实现,就应采用嵌套SQL语句形式,以减少数据量。对于不能改写的连接选择运算,可以采用调整表的排列顺序或者选择条件的方式来减少临时表中的列数,同样有优化系统性能的作用。但是表的连接运算会造成参与运算关系的额外开销,因此应尽量避免连接;必须使用连接时,可以在列上建立索引以提高执行速度,一般可选择有索引的表作为内部表,而较小的表作为外部表,这样设计可以减少重新存取内部表的次数。连接使用子查询可以在关系运算前减少参与关系运算的表的体积。

(4)数据类型转换

尽可能避免数据类型的转换,在做比较时,有相同数据类型的语句其执行效率更高,否则在数据类型的转换过程中会因为精度限制而造成不精确的值,运行时转换也需要花费很大代价。

(5)结果集减小

结果集的方法为除非查询全部列,否则可以用具体的列名来代替‘木”,避免返回多余的列。SOL语句中的WHERE子句会首先被执行,因此不要用HAVING来代替功能相同的WHERE子句,WHERE子句可以及早滤掉不满足条件的记录,减少GROUP BY处理的行数。

(6)笛卡几积

把需要的选择同在它之前要执行的笛卡儿积结合起来,以成为同一个连接运算,这样的连接特别是等连接运算,要比同样关系上的笛卡儿积节省很多的时间。

(7)SELECT,UPDATE,DELETE语句中的子查询应当有规律地查找少于20%的表行。如果一个SOL语句查找的记录行数超过其总行数的20%,那么即使使用了索引,性能上的提高也非常有限。

(8)索引的建立

不宜在需要频繁删除的表中建立索引,否则很容易产生空间碎片,因为当记录从表中删除时,相应也会从表的索引中删除。表释放的空间可以再用,而索引释放的空间却不能再用;频繁进行删除操作的被索引的表,应当阶段性地重建索引,以避免在索引中造成空间碎片。在允许的条件下,也可以阶段性地TRUNCATE表,TRUNCATE命令删除表中所有记录,也删除索引碎片。

(9)索引的使用

在使用索引时要按索引对应字段的顺序进行引用。

(10)“+”的使用用(+)比用NOT IN更有执行效率。

EBS开发性能优化之SQL语句优化的更多相关文章

  1. 浅谈mysql配置优化和sql语句优化【转】

    做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...

  2. 数据库的优化(表优化和sql语句优化)

    在这里主要是分为表设计优化和sql语句优化两方面来实现. 首先的是表设计优化: 1.数据行的长度不要超过8020字节.如果是超过这个长度的话这条数据会占用两行,减低查询的效率. 2.能用数字类型就不要 ...

  3. ORACLE性能优化之SQL语句优化

    版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   操作环境:AIX +11g+PLSQL 包含以下内容: 1.  SQL语句执行过程 2.  优化器及执行计划 3.  合 ...

  4. 数据库性能调优——sql语句优化(转载及整理) —— 篇1

    一.问题的提出                    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 ...

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

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等是体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  6. 数据库性能优化之SQL语句优化(上)

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的 ...

  7. [转]数据库性能优化之SQL语句优化1

    一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统 ...

  8. 数据库性能优化之SQL语句优化1

    一.问题的提出 在 应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实 际应用后,随着数据库中数据的增加, ...

  9. 数据库性能调优——sql语句优化(转载及整理) —— 篇2

    下面是在网上搜集的一些个人认为比较正确的调优方案,如有错误望指出,定虚心改正 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中 ...

随机推荐

  1. [LeetCode] Knight Probability in Chessboard 棋盘上骑士的可能性

    On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exactly K ...

  2. Java IO(一)

    在Java中,所有的io类都放在java.io包中. 在IO操作中,我们总是会从一个源数据读取到一个目标数据.那么这个源数据和目标数据可以是文件,流等等.那最常见的就是文件,就像我们在本地电脑上写入东 ...

  3. [SCOI 2016]美味

    Description 题库链接 给你一个长度为 \(n\) 的序列 \(A\) . \(m\) 组询问 \((b,x,l,r)\) 询问 \[\max_{i=l}^r b\oplus (A_i+x) ...

  4. [HNOI 2001]矩阵乘积

    Description Input Output Sample Input 1 2 3 4 2 3 1 1 3 1 4 5 2 2 1 3 1 2 1 2 2 2 1 1 3 1 2 3 2 4 1 ...

  5. Codeforces278E Tourists

    来自FallDream的博客,未经允许,请勿转载,谢谢. 给定一张无向图,有点权,要支持单点修改点权和询问从一个点到另一个点不重复经过节点的路径上点权最小值的最小值. n,m<=10^5 考虑求 ...

  6. [bzoj1063][Noi2008]道路设计

    来自FallDream的博客,未经允许,请勿转载,谢谢. Z国坐落于遥远而又神奇的东方半岛上,在小Z的统治时代公路成为这里主要的交通手段.Z国共有n座城市,一些城市之间由双向的公路所连接.非常神奇的是 ...

  7. Spring源码分析(一)--BeanProcessor

    一.何谓BeanProcessor BeanProcessor是SpringFramework里非常重要的核心接口之一,我先贴出一段源代码: /* * Copyright 2002-2015 the ...

  8. Java Servlet 笔记3

    Servlet 表单数据 很多情况下,需要传递一些信息,从浏览器到 Web 服务器,最终到后台程序.浏览器使用两种方法可将这些信息传递到 Web 服务器,分别为 GET 方法和 POST 方法. 1. ...

  9. 阿里 & 酷家乐:实习生面试

    最近海投了十家公司,暂时有阿里两面(已凉).酷家乐两面(大概凉了).网易一面.前两个都是基础知识发挥得还可以,两家公司二面都凉凉. 阿里一面(3.21 26min) 刚好买了中饭回宿舍打开正准备吃的时 ...

  10. java 获得当前时间前指定几个小时的时间?

    //@2016-12-13 获取当前时间,指定前面多少小时的时间 //返回格式YYYYMMDDHHMMSS public static String getBeforeHourTime(int iho ...