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

1.肯定有人说建索引啊。

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

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

4.其实还可以把表细分,然后通过应用控制根据不同条件查询不同表

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

下面开始介绍日常开发写sql需要注意的地方

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)相同的索引列不能互相比较,这将会启用全表扫描。

还有很多优化的地方...只能在工作中慢慢学习。。。

Oracle sql的基本优化写法和思路。的更多相关文章

  1. Oracle SQL语句性能优化方法大全

    Oracle SQL语句性能优化方法大全 下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的 ...

  2. oracle中sql语句的优化

    oracle中sql语句的优化 一.执行顺序及优化细则 1.表名顺序优化 (1) 基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图: Student_info   (30000条数据)D ...

  3. Oracle SQL性能优化技巧大总结

    http://wenku.baidu.com/link?url=liS0_3fAyX2uXF5MAEQxMOj3YIY4UCcQM4gPfPzHfFcHBXuJTE8rANrwu6GXwdzbmvdV ...

  4. Oracle SQl优化总结

    对数据库技术的热爱是我唯一的安慰,毕竟这是自己喜欢的事情,还可以做下去. 因为客户项目的需要,我又开始接触Oracle,大部分工作在工作流的优化和业务数据的排查上.为了更好的做这份工作,我有参考过or ...

  5. [terry笔记]Oracle SQL 优化之sql tuning advisor (STA)

    前言:经常可以碰到优化sql的需求,开发人员直接扔过来一个SQL让DBA优化,然后怎么办? 当然,经验丰富的DBA可以从各种方向下手,有时通过建立正确索引即可获得很好的优化效果,但是那些复杂SQL错综 ...

  6. Oracle数据库的sql语句性能优化

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

  7. ORACLE SQL性能优化汇总

    ORACLE SQL语句共享 Oracle SQL语句具备共享特性,为了不让ORACLE数据库重复解析相同的简单单表SQL语句,ORACLE在SGA系统共享区域内SBP共享池内存放的SQL语句将被所有 ...

  8. Oracle SQL的优化

    SQL的优化应该从5个方面进行调整:1.去掉不必要的大型表的全表扫描2.缓存小型表的全表扫描3.检验优化索引的使用4.检验优化的连接技术5.尽可能减少执行计划的Cost SQL语句:是对数据库(数据) ...

  9. 利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引)

    利用 Oracle EM 企业管理器 进行oracle SQL的优化(自动生成索引) ##应用情景 项目中有大量的SQL,尤其是涉及到统计报表时,表关联比较多,当初开发建表时也没搞好索引关联的,上线后 ...

随机推荐

  1. hadoop命令帮助

    安装完hadoop后,在hadoop的bin目录下有一系列命令: container-executor hadoop hadoop.cmd hdfs hdfs.cmd mapred mapred.cm ...

  2. centos7防火墙使用方法

    参考网站:https://blog.csdn.net/achang21/article/details/52538049 添加开放指定端口: [root@yao bin]# firewall-cmd ...

  3. Apache Maven 入门篇

    2017-11-09注释:IntelliJ IDEA 2017.2.5 x64 等新版本会安装maven,为了有好的体验 建议在安装目录找到IntelliJ IDEA 2017.2.5\plugins ...

  4. JAVA Spring JavaBean 属性值的注入方式( 属性注入, 特殊字符注入 <![CDATA[ 带有特殊字符的值 ]]> , 构造器注入 )

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  5. PHP 程序员学数据结构与算法之《栈》

    “要成高手,必练此功”.   要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...

  6. 制作keil5的pack

    [原创出品§转载请注明出处] 出处:http://www.cnblogs.com/libra13179/p/6273415.html 我在这里就交大家怎样制作自己的Pack,(这里是我制作好的http ...

  7. 2.登录linun 输入密码登录不进去 进入单用户模式 修改 然后reboot

    centos进入单用户模式 单用户模式,就是你现在站在这台机器面前能干的活,再通俗点就是你能够接触到这个物理设备. 一般干这个活的话,基本上是系统出现严重故障或者其他的root密码忘记等等,单用户模式 ...

  8. ABAP-Keyword Documentation

    转载:https://help.sap.com/doc/abapdocu_750_index_htm/7.50/en-US/abenabap.htm ABAP - 关键字文档 本文档描述了ABAP语言 ...

  9. fiddler 修改request请求

    例:在request url后追加&test=1参数 在OnBeforeRequest函数中添加以下代码 if(oSession.uriContains("www.bing.com/ ...

  10. DELPHI WM_CopyData 用法

    unit Unit1; interface usesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...