Oracle sql的基本优化写法和思路。

首先简单介绍下常规的sql优化的方式:sql

1.确定有人说建索引啊。缓存

2.数据量实在太大,建分区啊。oracle

3.其实基于目前公司的业务还有一种办法那就是向上汇集表。根据查询业务,专门抽取上来一张表,直接作到select就好。函数

4.其实还能够把表细分,而后经过应用控制根据不一样条件查询不一样表学习

 

其实,我觉着以上这些思路的前提是SQL写法不能在优化了,不过通常状况下sql优化下 换个写法我觉着能解决最起码50%的查询慢的问题。优化

下面开始介绍平常开发写sql须要注意的地方spa

1.得学会看执行计划。索引

  什么是执行计划,执行计划我觉着就是oracle决定如何来执行你的sql的一个过程记录,这个东西是会被缓存的,前提是你的sql跟缓存起来的如出一辙开发

  plsql里面F5就能够看执行计划了。p数学

  执行计划的执行顺序是 缩进最多最早执行,一样缩进从上往下。

  主要看几点就行了,是否是全表扫描,走没走索引,基数(就是返回结果集) 耗费(就是这个过程要多久)

2.写sql一些简单的规范

  写sql尽可能都大写,还有写表的别名,而后选择字段都是写别名.字段名 ,别用select * 

3.like走索引不?

  like 'abc%' 走索引    like '%abd%'不走索引

4.学会使用exists

  能够使用exists代替in ,not exists 代替 not in

5.不要对索引列进行计算致使索引失效,也不要让他自动转型

6. is null 和 is not null 不走索引

7. 复合索引,是有顺序的, 若是你只用了其中一个非第一个 那是没用的

8.ORDER BY 走不走索引?

  走索引,可是有两个限定:

   (1)ORDER BY中全部的列必须包含在相同的索引中并保持在索引中的排列顺序。 

     (2)ORDER BY中全部的列必须定义为非空

9.使用>=  代替 >

10.不走索引的其余状况

   (1)'!='不走索引。索引只能告诉咱们什么存在于表中, 而不能告诉你什么不在表中。

   (2)'||'是字符链接函数。就象其余函数那样, 停用了索引。

   (3)'+'是数学函数。和其余数学函数同样, 停用了索引。

   (4)相同的索引列不能互相比较,这将会启用全表扫描。

 

 

还有不少优化的地方...只能在工做中慢慢学习。。。

相关文章
相关标签/搜索