SQL执行的原理以及一些常见的关键字
sql语句在面试里面问道的问题:
sql的解析的顺序
1.where里面的条件是从右向左扫描解析
2.from里面的大表在前,小表在后,解析的顺序是从右向左解析。
3.left/right/inner join 链接基于hashjoin/loop/merge三种方式构建链接方式(最终翻译成oracle内部的一些函数)。
4.存储过程的有点就是sql解析完一次之后,以后就可以恭喜,不需要重新构建sql解析过程(执行计划,类似一个翻译的过程),在开发中我们也可以给予绑定变量,减少sql硬解析的开销。
5.物化视图/分区表
6.游标就是SQL语句执行过程中的一个内存区域的指针,比如存储过程里面常用的游标,但是游标比较消耗内存,占用资源,开销大。解决的方法可以使用临时表机制。
==========================================================================
rank 一般项目里面很少用,比较高级的语法 partion by 很好用,避免过多的group by
dense_rank
over
partition by
order by
===
rowid
===
rownum 常用
===
case when 常用
===
left join 常用(项目开发中大量使用left join 做一些报表查询,比较少使用子查询)
inner join 常用
===
exist in 用,但是不是很多,子查询使用不多,基本都是join连接
===
存储过程
临时表 存储过程常用----其实个人感觉存储过程一个就是游标,一个就是临时表存储数据
===
系统视图,部分开发场景要使用---比如开发一个类似于PL/SQL的客户端软件就需要一些系统特殊的视图以及Metedata元数据信息
===
触发器 少用----没办法了就是要触发器
===
自定义一些函数,也就是对oracle里面的函数进行封装成我们自己的函数,方便后期项目的维护
SQL执行的原理以及一些常见的关键字的更多相关文章
- SQL 执行 底层原理(一)
一.SQL Server组成部分 1.关系引擎:主要作用是优化和执行查询.包含三大组件: (1)命令解析器:检查语法和转换查询树. (2)查询执行器:优化查询. (3)查询优化器:负责执行查询. 2. ...
- mysql 原理 ~ sql执行
一 普通sql执行的具体过程1 连接器 管理连接,权限验证2 分析器 词法分析,语法分析 比如 数据表和数据列是否存在, 别名是否有歧义,是否符合标准sql语法等3 优化器检测 执行计划生 ...
- SQL select查询原理--查询语句执行原则<转>
1.单表查询:根据WHERE条件过滤表中的记录,形成中间表(这个中间表对用户是不可见的):然后根据SELECT的选择列选择相应的列进行返回最终结果. 1)简单的单表查询 SELECT 字段 FROM ...
- 【Mybatis】SQL语句的解析执行过程原理
sqlSession简单介绍 拿到SqlSessionFactory对象后,会调用SqlSessionFactory的openSesison方法,这个方法会创建一个Sql执行器(Executor),这 ...
- Sql注入基础原理介绍
说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...
- sql优化(原理,方法,特点,实例)
整理的有点多,做好心理准备...... 1.资源优化理解: 不同设备,io不同.每种设备都有两个指标:延时(响应时间):表示硬件的突发处理能力:带宽(吞吐量):代表硬件持续处理能力. 每种硬件主要的工 ...
- MySQL中的索引、左连接、右连接、join、sql执行顺序
逻辑架构: 1.连接层 2.服务层 3.引擎层(插拔式) 4.存储层 存储引擎: 常用的有:MyISAM.InnoDB 查看命令:show variables like '%storage_engin ...
- Atitit sql执行计划
Atitit sql执行计划 1.1. 首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的 Oracle中的执行计划 ...
- Spark SQL / Catalyst 内部原理 与 RBO
原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/spark/rbo/ 本文所述内容均基于 2018年9月10日 Spark ...
随机推荐
- Java compiler level does not match the version of the installed Java project facet.问题
从同事那里拷贝过来的web项目,导入到eclipse中,出现Java compiler level does not match the version of the installed Java p ...
- HBase(六): HBase体系结构剖析(上)
HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...
- LintCode "Max Tree"
Something new I learnt from it: what is Treap and a O(n) construction https://en.wikipedia.org/wiki/ ...
- mysql中int转varchar
这里要注意,cast(XX as varcahr(10))在mysql中不好使,要cast(XX as char(10))这样才好使
- HTML5 中已经可以用 Ajax 上传文件了,而且代码非常简单,借助 FormData 类即可发送文件数据。
<?phpif (isset($_POST['upload'])) { var_dump($_FILES); move_uploaded_file($_FILES['upfile']['tmp_ ...
- java运用Comparator为对象排序
要排序的类需要实现Comparator接口,重写compare方法: user类及实现接口的内部类: package test; import java.util.Comparator; public ...
- Android.mk
Introduction: Android.mk编译文件是用来向Android NDK描述你的C,C++源代码文件的, 这篇文档描述了它的语法.在阅读下面的内容之前,假定你已经阅读了docs/OVER ...
- Codeforces Round #363 (Div. 2) One Bomb
One Bomb 题意: 只有一个炸弹,并且一个只能炸一行和一列的'*',问最后能否炸完所以'*',如果可以输出炸弹坐标 题解: 这题做的时候真的没什么好想法,明知道b题应该不难,但只会瞎写,最后越写 ...
- 关于Rotation和Quaternion的一些问题
当我们使用unity的时候,面对一个物体,一个不可避免的问题就是:控制物体的旋转. unity的Transform组件的第二个属性Rotation为我们提供控制物体旋转的功能.在一个物体的Inspec ...
- 一个超级简单的HTML模板框架源代码以及使用示例
HTML模板框架源代码 var HtmlTemplate = (function () { function HtmlTemplate(htmlSource) { this.htmlSource = ...