【数据库优化专题】MySQL视图优化(一)
本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家——李海翔所著的MySQL视图优化系列文章。以下是第一部分的内容,未完部分敬请关注后续更新。
专家简介
李海翔
网名:那海蓝蓝
DBA+社群MySQL领域原创专家
从事数据库研发、数据库测试与技术管理等工作10余年,对数据库的内核有深入研究,擅长于PostgreSQL和MySQL等开源数据库的内核与架构。现任职于Oracle公司MySQL全球开发团队,从事查询优化技术的研究和MySQL查询优化器的开发工作。著有《数据库查询优化器的艺术》一书。
一、什么是视图
这个标题似乎有点简单了,一些人会想:作为一名数据库从业者,作为一名经验丰富的DBA,天天与视图打交道, 怎么能不知道什么是视图呢?
请在继续阅读之前,微闭双目,休息之余想一想, 什么是视图?思索之后,且与如下标准定义做个比较。
SQL标准定义是如下定义视图的:
1、首先,视图本质上,就是一个“查询”,而且是一个“有名字的查询”,名字是谁?——视图的名称。这就引申出另外一些概念,什么是查询?SQL标准做出如下定义:
1.1、base table:基表
SQL-data consists entirely of table variables,called base tables.
SQL-data构成的完整的表变量的组合,称为基表。即SQL-data的集合。
思考一个问题,CREATE TABLE+INSERT语句建表并插入一些数据后,其生成物,是否可以称为“base table”?
1.2、query,查询
An operation that references zero or more base tables and returns a table is called a query.
引用零个基表(如SELECT 1;则是引用零个基表)或多个基表(多表连接操作)的操作(查询操作)并且返回一个“table”,这样的操作称为“query”(查询)。可见query是一个“过程”且有结果,而非一个“查询语句”(SELECT statement)。
1.3、视图的值,是此有名字的查询操作的执行结果。
2、table,表。回答1.1中的问题,base table 和table是有区别的。
A table has an ordered collection of one or more columns and an unordered collection of zero or more rows.
从上面的定义可以看出,table除了SQL-data外,还有“zero or more rows”,即数据。
3、那么,什么是SQL-data?
SQL-data is data described by SQL-schemas — data that is under the control of an SQL-implementation in an SQL-environment.
SQL-schemas和SQL-implementation以及SQL-environment的定义参见SQL标准(如果展开,越展越多)。我们可以简单认为SQL-data就是描述“字段”的数据。所以SQL-data可以用以表述表的定义,即base table。
4、与view相似的一个概念,称为“派生表”,其SQL标准的定义如下:
The result of a query is called a derived table.
一个查询的结果被称为派生表。即派生表也是一个有结果的查询。而视图是查询的一种,视图的值是查询的结果,那么派生表和视图之间有什么差别呢?从形式上看,二者差别仅在于是否有名字。
一个新的问题随之而来:Q1:在MySQL中,视图和派生表有差别吗?他们的处理方式一样吗?
未完待续……敬请持续关注~
本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2015-11-06
【数据库优化专题】MySQL视图优化(一)相关推荐
- 性能优化专题 - MySql 性能优化 - 04 - MySql调优
目录导航 前言 Undo-log与Redo-log 案例 当前读.快照读 Redo Log的落盘配置 MySQL配置优化 MySQL服务器参数类型 快速定位MySql配置文件 MySQL内存参数配置 ...
- 服务器性能优化和Mysql性能优化
服务器性能优化和Mysql性能优化 影响性能的几个因素 服务器硬件 CPU 内存 IO子系统 服务器系统 CentOS系统参数优化 sysctlconf 优化 limitconf参数优化 磁盘调度策略 ...
- Mysql性能优化、Mysql参数优化、Mysql配置优化
码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...
- python数据库优化_python | Mysql性能优化一
对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] 分表技术(水平分割.垂直分割) ...
- 性能优化专题 - JVM 性能优化 - 04 - GC算法与调优
目录导航 前言 Garbage Collect(垃圾回收) 如何确定一个对象是垃圾? 引用计数法 可达性分析 垃圾收集算法 标记-清除(Mark-Sweep) 复制(Copying) 标记-整理(Ma ...
- 【性能优化】MySQL性能优化之存储引擎调优
1 MySQL总体架构介绍 1.1 MySQL总体架构介绍 引言 MySQL是一个关系型数据库 应用十分广泛 在学习任何一门知识之前 对其架构有一个概括性的了解是非常重要的 比如索引.sql是在哪个地 ...
- mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)
概述 目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B Tree(B 树)作为索引结构.B Tree是数据库系统实现索引的首选数据结构.在MySQL中,索引属于存储引擎级别的概念,不 ...
- 性能优化专题十一--线程优化
nice与进程调度 Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度. nice的取值范围为-20到19. 通常情况下,ni ...
- php面试专题---MySQL常用SQL语句优化
php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...
最新文章
- Josephus问题
- SAP PM 初级系列22 - IW38可以批量处理维修工单
- 第8章3节《MonkeyRunner源码剖析》 5
- 深圳网络推广提醒大家做好URL标准化,网站排名“事半功倍”!
- 子网划分,9张表格搞定
- aspnet_Users中LastActiveDate的问题
- zcmu 1128 (数据处理)
- LVS(7)——NAT实践
- 多线程调用同一个对象的方法_多线程之如何创建和使用线程
- 三星电子通信撤出中国!
- Oh-My-Zsh 下远程ssh的乱码问题
- 苹果Mac上好用的分屏软件:Magnet
- 在 COMSOL 中模拟地震波的传播
- 使用JavaScript实现一个俄罗斯方块
- 《腾讯传》五、荡清环宇,横扫外来者; 千夫所指,腾讯“三宗罪”
- 文件服务器实现网络打印,图文详解 服务器共享打印设置
- ant 编译java_java之ant编译
- java兔子繁殖总数_Java 兔子繁殖迭代问题
- 取出字符串中数字的最大值
- 房屋翻新步骤有哪些?极家装修怎么样?