SQL语句执行顺序

一、sql语句的执行步骤:1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义。 2) 语义分析,检查语句中涉及的

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

SQL Select语句完整的执行顺序:

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

列子:

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

SQL Select语句完整的执行顺序:

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

linux

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1936710.html

(0)
上一篇 2025年2月22日 23:07:32
下一篇 2025年2月22日 23:07:48

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • sqlplus未找到命令怎么解决

    在 SQLPlus 中遇到“未找到命令”错误时,解决方案包括:1. 检查拼写和大小写;2. 验证命令语法;3. 检查环境变量 PATH;4. 查找别名;5. 安装最新版本;6. 检查权限;7. 其他问题排查。 SQLPlus 未找到命令:解…

    2025年2月23日
    100
  • sqlplus命令的用法

    摘要:SQLPlus 是一种 Oracle 数据库交互式工具,用于连接数据库并执行 SQL 语句。可通过命令行启动,命令结构包括 SQL 语句、分号和换行符。基本命令:CONNECT:连接数据库。DISCONNECT:断开连接。SELECT…

    2025年2月23日
    100
  • sqlplus怎么删除命令

    在 SQLplus 中,可以通过以下方法删除已输入的命令:使用退格键逐个删除字符。使用 Ctrl+C 组合键清除当前命令行。使用 Esc 键取消正在进行的命令。使用向上和向下箭头键浏览命令历史记录,再配合 Home 和 End 键进行删除。…

    2025年2月23日
    100
  • sql中如何进行拼接

    SQL 中可使用多种方法进行字符串拼接,包括使用连接运算符 (+)、CONCAT 函数、|| 运算符(Oracle 和 MySQL)、FORMAT 函数(SQL Server)和 STUFF 函数(SQL Server)。具体选择取决于拼接…

    2025年2月23日
    100
  • sql中rownum是什么意思

    ROWNUM 是 SQL 中的伪列,指示查询结果集中每行的相对位置。它通常与其他列结合使用,实现限制结果集、分页和跟踪行号等目的。需要注意的是,ROWNUM 的值是非持久性的,并且并非所有数据库系统都支持它。 ROWNUM 在 SQL 中的…

    2025年2月23日
    100
  • sql中sno是什么意思

    在 SQL 中,SNO 代表“序列号”,它是数据库系统自动生成的唯一标识符,用于标识表中记录的顺序。它用于排序、检索数据、确保数据完整性和进行 JOIN 操作。SNO 通常隐藏,但一些数据库管理系统(如 PostgreSQL 和 MySQL…

    2025年2月23日
    100
  • sql怎么查看表的索引

    通过查询系统表,可以获取表的索引信息,包括索引名称、是否唯一、索引类型、索引列和行数。常用系统表有:MySQL 的 information_schema.STATISTICS、PostgreSQL 的 pg_indexes、Oracle 的…

    2025年2月23日
    100
  • sql怎么查看视图表

    要查看视图表,可以使用以下步骤:使用 SELECT 语句获取视图中的数据。使用 DESC 语句查看视图的架构。使用 EXPLAIN 语句分析视图的执行计划。使用 DBMS 提供的 GUI 工具浏览视图表。使用特定于语言的命令(如嵌入式 SQ…

    2025年2月23日
    100
  • sql中怎么拼接字符串

    在 SQL 中,可使用以下方法连接字符串:加号运算符 (+)CONCAT() 函数|| 运算符(Oracle)CONCAT_WS() 函数(MySQL)|| 操作符(PostgreSQL,用双引号括起字符串) SQL 中字符串拼接的方法 在…

    2025年2月23日
    100
  • 在sql中空值用什么表示

    在 SQL 中,空值表示未知或不存在的值,可使用 NULL、空字符串或特殊值表示。处理空值的方法包括使用操作符(IS NULL/IS NOT NULL)、COALESCE 函数(返回第一个非空值)、CASE 语句(执行基于是否为空的操作)和…

    2025年2月23日
    100

发表回复

登录后才能评论