(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. python包安装和使用机制

    python语言的魅力之一就是大量的外置数据包,能够帮助使用者节省很多时间,提高效率.模块下载和引用是最常见的操作,现在解析内部的原理和背后发生的故事,做到心里有数. 导航: 基本定义 模块使用 模块 ...

  2. PHPCMS V9 任意文件下载(Windows)

    先来看看PHPCMS V9.6.0的任意下载 还是和上次的注入一样,是个由parse_str() 函数引发的变量覆盖. 位于 /phpv9.6.0/phpcms/modules/content/dow ...

  3. jdk1.7中的常量池

    在探究jdk1.7中的常量池,我们可以先看看以下的这段代码 public static void main(String[] args) throws Throwable { List<Stri ...

  4. [HAOI 2008]硬币购物

    Description 硬币购物一共有4种硬币.面值分别为c1,c2,c3,c4.某人去商店买东西,去了tot次.每次带di枚ci硬币,买si的价值的东西.请问每次有多少种付款方法. Input 第一 ...

  5. 【BZOJ3631】【JLOI2014】松鼠的新家

    原题传送门 题意:给你一棵树,然后有一个遍历顺序,你需要补全这个遍历顺序,然后输出这个遍历顺序中每个点的出现次数. 解题思路:本来想找树剖的题,结果发现了一题可以直接写lca的.... 做法1:非常简 ...

  6. 【PowerOJ1738】最小路径覆盖

    Description 给定有向图G=(V,E).设P 是G 的一个简单路(顶点不相交)的集合.如果V 中每个 顶点恰好在P 的一条路上,则称P是G 的一个路径覆盖.P 中路径可以从V 的任何一个顶 ...

  7. ●POJ 3348 Cows

    题链: http://poj.org/problem?id=3348 题解: 计算几何,凸包,多边形面积 好吧,就是个裸题,没什么可讲的. 代码: #include<cmath> #inc ...

  8. hdu 5538(水)

    Input The first line contains an integer T indicating the total number of test cases. First line of ...

  9. [BZOJ]1018 堵塞的交通(SHOI2008)

    一道有点神的线段树. Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城 ...

  10. SPOJ COT(树上的点权第k大)

    Count on a tree Time Limit: 129MS   Memory Limit: 1572864KB   64bit IO Format: %lld & %llu Submi ...