MySQL学习随笔--通过实例理解merge ,temptable算法的差异
实例1
使用视图的两种算法merge和temptable分别统计
表tb_phone中market_price大于4000的手机,然后查询视图查找出小于6000的手机
简单总结最终获取的结果:查询出market_price大于4000且小于6000的手机
表数据:

- merge合并算法
合并的执行方式,每当执行的时候,先将视图的sql语句与外部查询视图的sql语句,合并在一起,最终执行.
以下是使用常规select语句模拟合并算法:

执行结果模拟与算法的结果相同:

- temptable临时表算法
先执行视图再执行其他操作的查询
临时表模式,每当查询的时候,将视图所使用的select语句生成一个结果的临时表,再在当前的临时表内进行查询
以下是使用常规select语句模拟临时表算法:

执行结果模拟与算法的结果相同:

比较两种算法结果也相同,似乎是这样的,接下来的实例将不同
实例2
使用视图的两种算法merge和temptable分别统计
表tb_phone , 同类(cid)手机的最高价格(market_price)的产品
表数据:

首先可以考虑基本select语句的实现方式(这里就不再赘述):
先排序再分组

接下来使用两种算法:
- merge合并算法

最后一句select模拟合并算法有语法错误的,order by 不能在 group by之前,这时执行会报错,但在视图中不会报错,而是直接跳过了错误部分order by 直接执行了
select * from tb_phone group by cid
最终结果(错误):

- temptable临时表算法

发现执行结果与普通语句相同,模拟的语句同样正确
最终结果(正确):

MySQL学习随笔--通过实例理解merge ,temptable算法的差异的更多相关文章
- MySQL学习随笔--视图
视图概念 数据库中的视图指的是一个虚拟表,其内容由查询定义.同真实的表一样,视图也是由行与列构成的.视图的数据来源由SQL语句查询得到,不存储数据 视图创建方法 格式 : create view 视图 ...
- [学习笔记]一个实例理解Lingo的灵敏性分析
一个实例理解Lingo的灵敏性分析 线性规划问题的三个重要概念: 最优解就是反应取得最优值的决策变量所对应的向量. 最优基就是最优单纯形表的基本变量所对应的系数矩阵如果其行列式是非 ...
- PyQt(Python+Qt)学习随笔:快速理解Qt 中Action是什么
一.引言 Qt中Action这个词接触很久了,一直以来没去学习,今天终于准备学习了,查了些资料,初步总结为: Action为界面操作的抽象,应用程序可以通过菜单,工具栏按钮以及键盘快捷键来调用通用的命 ...
- MySQL学习随笔记录
安装选custmer自定义安装.默认安装全部在c盘.自定义安装的时候有个advance port选项用来选择安装目录. -----------------------MySQL常见的一些操作命令--- ...
- PyQt(Python+Qt)学习随笔
老猿Python博文目录 老猿Python博客地址 PyQt学习随笔 PyQt(Python+Qt)帮助文档官网及文档下载 PyQt(Python+Qt)学习随笔:PyQt帮助文档导入assistan ...
- MySQL学习总结(摘抄)
1.数据库概述 简 而言之,数据库(DataBase)就是一个存储数据的仓库.为了方便数据的存储和管理,将数据按照特定的规律存储在磁盘上.通过数据库管理系统,可以有 效的组织和管理存储在数据库中的数据 ...
- mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记
mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...
- 我的MYSQL学习心得(十一) 视图
我的MYSQL学习心得(十一) 视图 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(十一)
原文:我的MYSQL学习心得(十一) 我的MYSQL学习心得(十一) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...
随机推荐
- tunctl和虚拟网卡
1 tun/tap驱动 1.1 网卡驱动 同tcp/ip协议栈打交道,接受和发送数据包 1.2 字符驱动 内核和用户态通过字符设备交换数据包. 2 tun虚拟网卡的创建 tunctl -t tun0 ...
- Why Do Microservices Need an API Gateway?
Why Do Microservices Need an API Gateway? - DZone Integration https://dzone.com/articles/why-do-micr ...
- Delphi全角转半角
function ToDBC( input :String):WideString;varc:WideString;i:Integer;beginc := input;for i:=1 to Leng ...
- PP-判断生产订单状态(关闭)
方法一.工单号通过 resb找到对象号 然后找到状态为I0045利用表JEST与TJ02T . 方法二.函数'STATU_CHECK' 检查工单状态为'I0045' 则为已做技术性关闭. READ T ...
- sql server 支持中文繁体和简体
SET ANSI_PADDING ON INSERT INTO 表 VALUES (N'中文')
- YTU 2912: 圆柱体的C++
2912: 圆柱体的C++ 时间限制: 1 Sec 内存限制: 128 MB 提交: 333 解决: 133 题目描述 小明的弟弟加入的C++兴趣小组,组长布置的第一个任务就是将已有的C程序改写成 ...
- inserting a large number of records with SQLiteStatement.
Below is a demo application I wrote that creates 100 records programmatically, inserts them using on ...
- bzoj 1898
1898: [Zjoi2005]Swamp 沼泽鳄鱼 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1197 Solved: 661[Submit][S ...
- Eclipse打开Android项目报Parsing Data for android-21 failed错误的解决办法(转载)
转载:http://segmentfault.com/blog/hongliang/1190000000739285 今天手贱,用android命令打开SDK Manager下载了最新的Android ...
- Linux 系统管理命令 - vmstat - 虚拟内存统计
命令详解 重要星级: ★★★★☆ 功能说明: vmstat 是 Virtual Memory Statistics ( 虚拟内存统计 ) 的缩写,利用 vmstat 命令可以对操作系统的内存信息.进程 ...