1.select 列 from 表列表名/视图列表名 where 条件.
2.select 列 from 表列表名/视图列表名 where 条件 group by (列列表) having 条件
3.select 列 from 表列表名/视图列表名 where 条件 group by (列列表) having 条件 order by 列列表
4.select 列 from 表1 join 表2 on 表1.列1=表2.列1...join 表n  on 表n.列1=表(n-1).列1 where 表1.条件 and 表2.条件...表n.条件
执行顺序:

1. 先where 后select
2. 先where 再group 再having 后select
3. 先where 再group 再having 再select 后order
4. 先join  再where 后select
第二条是这样的,如果你提取的字段名里边包涵有组函数count,sum函数,必须用group by分组,having是给函数加条件,就等于二次过滤. 具体的组函数sql语句定义规则在下一篇列出
一、sql语句的执行步骤:
1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。
2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限。
3)视图转换,将涉及视图的查询语句转换为相应的对基表查询语句。
4)表达式转换, 将复杂的 SQL 表达式转换为较简单的等效连接表达式。
5)选择优化器,不同的优化器一般产生不同的“执行计划”
6)选择连接方式, ORACLE 有三种连接方式,对多表连接 ORACLE 可选择适当的连接方式。
7)选择连接顺序, 对多表连接 ORACLE 选择哪一对表先连接,选择这两表中哪个表做为源数据表。
8)选择数据的搜索路径,根据以上条件选择合适的数据搜索路径,如是选用全表搜索还是利用索引或是其他的方式。
9)运行“执行计划”
二、oracle 共享原理: 
    ORACLE将执行过的SQL语句存放在内存的共享池(shared buffer pool)中,可以被所有的数据库用户共享当你执行一个SQL语句(有时被称为一个游标)时,如果它和之前的执行过的语句完全相同, ORACLE就能很快获得已经被解析的语句以及最好的 执行路径. 这个功能大大地提高了SQL的执行性能并节省了内存的使用
三、oracle 语句提高查询效率的方法:

1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。

使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,也就是查出主查询以后,和子查询匹配,只要对应就停止查询,这就节省了时间,Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。

避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销

SQL Select语句完整的执行顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用组函数进行计算;
5、使用having子句筛选分组;
6、计算所有的表达式;
7、使用order by对结果集进行排序。

SQL语句执行顺序以及oracle基本查询优化相关推荐

  1. mysql oracle 查询语句执行顺序_MySQL sql语句执行顺序

    (8)     DISTINCT (1)     FROM (3)      JOIN (2)     ON (4)     WHERE (5)     GROUP BY (6)     HAVING ...

  2. oracle中子查询的执行顺序是,Oracle sql语句执行顺序

    sql语法的分析是从右到左 一.sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. ...

  3. Oracle sql语句执行顺序

    一.sql语句的执行步骤: 1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义. 2)语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限. 3)视图转换,将涉及视图的 ...

  4. 【转】SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  5. SQL 语句执行顺序

    From:http://www.jellythink.com/archives/924 Oracle-SQL语句执行原理和完整过程详解:https://wenku.baidu.com/view/398 ...

  6. mysql 执行顺序 SQL语句执行顺序分析

    最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...

  7. mysql sql语句执行顺序

    mysql sql语句执行顺序 引言:作为一个程序猿.要想优化sql,首先要明白sql语句的执行顺序.同时防止该死的面试官问一些数据库专业的问题有必要知道这些 sql语句select语句查询顺序 (7 ...

  8. 25、Sql语句执行顺序

    sql语句定义和执行顺序 摘自<MySQL技术内幕:SQL编程> sql语句定义的顺序 (1) SELECT (2)DISTINCT<select_list> (3) FROM ...

  9. php语句执行顺序,sql语句执行顺序是什么

    sql语句执行顺序:1.最先执行from tab:2.where语句是对条件加以限定:3.分组语句[group by-- having]:4.聚合函数:5.select语句:6.order by排序语 ...

最新文章

  1. 通讯速率_什么是通讯?
  2. Java:Java的jar包之POI的简介、安装、使用方法(基于POI将Word、Excel、PPT转换为html)之详细攻略
  3. java基础----BigDecimal
  4. linux点亮硬盘灯命令 简书,威联通NAS交流学习:用虚拟机安装荒野无灯大佬的精简win10系统...
  5. linux7 修改服务启动项目命令,centos7服务部署flask项目
  6. Mr.J--.c 和.cpp 后缀详解
  7. 具有多个Join和选定列的示例LINQ
  8. 摩托罗拉里程碑升级Android 2.2刷机知识
  9. iOS 提交app到iTunes Connect,显示构建版本“+”号的小技巧/ 选择版本提交 无“+”号 问题/Xcode 上传成功但iTunes 不显示上传的版本的问题
  10. Hadoop版本区别Hadoop组成
  11. protobuf中repeated类型变量与C++ vector类型变量的相互赋值方法
  12. 西瓜书第三章习题及答案
  13. 计算机游戏软件使用说明书,虚贝游戏上号器怎么用 使用方法详解
  14. win10怎么设置护眼背景
  15. Office---Excel操作技巧使用正则表达式
  16. 从语音信号处理角度解读mic规格书
  17. ORB-SLAM3:单目+imu 详细代码解读
  18. 你的压力狗狗懂,通过闻味就知道!英国学者做实验论证,专门收集人做数学题时的气味...
  19. VC6控制Office
  20. ArrayList实现自定义排序

热门文章

  1. C++全局函数做友元
  2. 雷讯和pix_青海叶陇沟金矿地质地球化学特征及找矿方向
  3. IntelliJ Idea取消Colud not autowire.No
  4. 09_EGIT插件的安装,Eclipse中克隆(clone),commit,push,pull操作演示
  5. Linux for sougou ping yin (http://pinyin.sogou.com/linux/help.php)
  6. 8Linux服务器编程之:chdir()函数和cd命令,getcwd()函数和pwd
  7. Java的calendar类用法
  8. Kettle使用_7 数据校验组件应用
  9. Python基础概念_6_模块
  10. YOLOv3 学习笔记:大神好贴汇总+自身经验记录