在Oracle中,绑定变量是它的一大特色。绑定变量就是 在SQL语句中使用变量,通过不同的变量取值来改变SQL的执行结果。这样做的好处是能提升软解析的可能 性,不足之处在于可能会导致生成的执行计划不够优化,因此是否需要绑定变量还需要视情况而定。

举个例子,我们可以使用下面的查询语句:

SQL> select * from player where player_id = 10001;

你也可以使用绑定变量,如:

SQL> select * from player where player_id = :player_id;

这两个查询语句的效率在Oracle中是完全不同的。如果你在查询player_id = 10001之后,还会查询10002、 10003之类的数据,那么每一次查询都会创建一个新的查询解析。而第二种方式使用了绑定变量,那么在第 一次查询之后,在共享池中就会存在这类查询的执行计划,也就是软解析。

因此我们可以通过使用绑定变量来减少硬解析,减少Oracle的解析工作量。但是这种方式也有缺点,使用动 态SQL的方式,因为参数不同,会导致SQL的执行效率不同,同时SQL优化也会比较困难。

2、mysql中sql是如何执行的?

mysql是典型的cs架构,服务器端程序使用mysqld。整体的mysql流程如下图所示。

1. 连接层:客户端和服务器端建立连接,客户端发送SQL至服务器端; 2. SQL层:对SQL语句进行查询处理;

3. 存储引擎层:与数据库文件打交道,负责数据的存储和读取。

其中SQL层与数据库文件的存储方式无关,我们来看下SQL层的结构:

1. 查询缓存:Server如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端;如果没有,就进入到解析器阶段。需要说明的是,因为查询缓存往往效率不高,所以在MySQL8.0之后就抛弃了这个功能。

解析器:在解析器中对SQL语句进行语法分析、语义分析。

优化器:在优化器中会确定SQL语句的执行路径,比如是根据全表检索,还是根据索引来检索等。

执行器:在执行之前需要判断该用户是否具备权限,如果具备权限就执行SQL查询并返回结果。在MySQL8.0以下的版本,如果设置了查询缓存,这时会将查询结果进行缓存。

你能看到SQL语句在MySQL中的流程是:SQL语句→缓存查询→解析器→优化器→执行器。在一部分中, MySQL和Oracle执行SQL的原理是一样的。

与Oracle不同的是,MySQL的存储引擎采用了插件的形式,每个存储引擎都面向一种特定的数据库应用环 境。同时开源的MySQL还允许开发人员设置自己的存储引擎,下面是一些常见的存储引擎:

InnoDB存储引擎:它是MySQL 5.5.8版本之后默认的存储引擎,最大的特点是支持事务、行级锁定、外 键约束等。

MyISAM存储引擎:在MySQL 5.5.8版本之前是默认的存储引擎,不支持事务,也不支持外键,最大的特 点是速度快,占用资源少。

Memory存储引擎:使用系统内存作为存储介质,以便得到更快的响应速度。不过如果mysqld进程崩 溃,则会导致所有的数据丢失,因此我们只有当数据是临时的情况下才使用Memory存储引擎。

NDB存储引擎:也叫做NDB Cluster存储引擎,主要用于MySQL Cluster分布式集群环境,类似于Oracle 的RAC集群。

Archive存储引擎:它有很好的压缩机制,用于文件归档,在请求写入时会进行压缩,所以也经常用来做 仓库。

需要注意的是,数据库的设计在于表的设计,而在MySQL中每个表的设计都可以采用不同的存储引擎,我 们可以根据实际的数据处理需要来选择存储引擎,这也是MySQL的强大之处。

mysql必知必会第5版pdf_sql必知必会相关推荐

  1. html列表按时间排序代码_程序员小白必看:腾讯视频版排序列表的实现

    每当我们对国产剧失望的时候 总会有一部令人惊喜的剧目横空出世 这几天你一定被一个国产剧刷屏了 它就是<隐秘的角落> 图片源于网络,仅作配文展示 也许你并不是"第一个吃螃蟹的人&q ...

  2. Mysql数据库优化技术之配置篇、索引篇 ( 必看 必看 转)

    转自:Mysql数据库优化技术之配置篇.索引篇 ( 必看 必看 ) (一)减少数据库访问 对于可以静态化的页面,尽可能静态化 对一个动态页面中可以静态的局部,采用静态化 部分数据可以生成XML,或者文 ...

  3. 知来路方知去处。坎坷已过,一马平川后必看的经典!——2018最新倾斜摄影建模与无人机航拍影像处理完美配置解决方案!

    知来路方知去处.坎坷已过,一马平川后必看的经典!--2018最新倾斜摄影建模与无人机航拍影像处理完美配置解决方案! 知来路方知去处.来路坎坷已过,一马平川后更待继续攀登,这是测绘从业者的真实写照,也是 ...

  4. 关于s19赛季服务器维修,S19赛季已开服,版本重点调整需知熟,想要跟上游戏节奏必了解...

    原标题:S19赛季已开服,版本重点调整需知熟,想要跟上游戏节奏必了解 哈喽,大家好,欢迎来到AIES电竞. 王者荣耀S19赛季已经正式开服了,不过苹果区的召唤师还需要等一等,因为每次新赛季开启延迟的区 ...

  5. 【2023华为OD笔试必会25题--C语言版】目录

    本专栏收录了华为OD 2022 Q4和2023Q1笔试题目,100分类别中的出现频率最高(至少出现100次)的25道,每篇文章包括题目和我亲自编写并在Visual Studio中运行成功的C语言代码. ...

  6. 天 下 难 事 , 必 作 于 易 , 天 下 大 事 , 必 作 于 细 -道德经的哲学

    <道德经>--<老子道德经> 老 子: 「道 德 經」: 第 一 章 道 可 道 , 非 常 道 . 名 可 名 , 非 常 名 . 无 名 天 地 之 始 ﹔ 有 名 万 物 ...

  7. MySQL 企业监控器 2.3.10 正式版发布

    Oracle于近日发布了 MySQL 企业监控器 2.3.10 正式版. MySQL企业监控器主要用于实施对数据库进行监控和管理.通过它,数据库管理员不但可以获得高级的数据复制和数据库监控功能,同时还 ...

  8. 编程行业高手级别必学C语言,要挣大钱必学C语言,要做黑客、红客必学C语言,要面试名企、外企、高薪职位必学C语言。

    于大部分程序员, C语言 是学习 编程 的第一门语言,很少有不了解C的程序员. C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的, ...

  9. 【MySQL练习】数据查询(02)-简易版

    ---------------------MYSQL练习题:数据查询(02)-简易版---------------------- 提供了数据查询进阶版练习题的各种目录文件,便于对照自己思索练习: 增强 ...

  10. JAVA实现导出mysql表结构到Word详细注解版

    JAVA实现导出mysql表结构到Word详细注解版 转自https://blog.csdn.net/weixin_42041153/article/details/109739073 本文在原文中一 ...

最新文章

  1. 程序员新手 0年份等级 指导(一) 开发人员IT架构总览
  2. Nature:功能微生物组研究典范—采用甘露糖苷选择性抑制尿路致病性大肠杆菌(Gordon组作品)...
  3. 都在说微服务,那么微服务的反模式和陷阱是什么(三)
  4. 注意力机制的两种形式
  5. java 线程模型_Java基础篇之Java线程模型
  6. 2015蓝桥杯省赛---java---A---8(移动距离)
  7. 怎么创建数据表的实体类和业务类_微服务项目第13天:商品分类业务的实现
  8. 【C#】ADO .Net Entities Framework使用查询语句时遇到的错误
  9. python观察内存和修改内存
  10. 简单的PL/SQl链接远程ORACLE数据库方法
  11. redhat 6.5 vnc 配置
  12. 批处理mysql命令
  13. 引用类型-Function类型
  14. Java制作证书的工具keytool用法总结
  15. 下载b站外挂字幕,用 potplayer 播放视频也能看字幕了
  16. 单例模式的四种实现方式(饿汉模式、懒汉模式、静态内部类、枚举类)
  17. csp-202203
  18. pytorch学习--UNet模型
  19. rtklib 周跳检测
  20. 免费是王道!盘点国外十款免费好用的反病毒软件产品

热门文章

  1. NTVDM遇到一个硬错误
  2. 计算机网络技术基础 阚宝明,计算机网络技术基础阚宝明答案
  3. IOTA Silicone
  4. HDFS物理块存储大小
  5. 高效能技术领导者,不仅是首席技术官,更是首席情绪官
  6. PLC PLSY 指令
  7. 本周大新闻|苹果MR已进行Pre-EVT测试,Quest 2涨价100美元
  8. 如何做好论文汇报(转载)
  9. 文件系统层次结构标准和Linux上下载源代码配置编译安装
  10. HTML网页设计与制作:电影网站设计——电影泰坦尼克号(4页) HTML+CSS+JavaScript