本期数据库优化专题分享,为大家带来的是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视图优化(一)相关推荐

  1. 性能优化专题 - MySql 性能优化 - 04 - MySql调优

    目录导航 前言 Undo-log与Redo-log 案例 当前读.快照读 Redo Log的落盘配置 MySQL配置优化 MySQL服务器参数类型 快速定位MySql配置文件 MySQL内存参数配置 ...

  2. 服务器性能优化和Mysql性能优化

    服务器性能优化和Mysql性能优化 影响性能的几个因素 服务器硬件 CPU 内存 IO子系统 服务器系统 CentOS系统参数优化 sysctlconf 优化 limitconf参数优化 磁盘调度策略 ...

  3. Mysql性能优化、Mysql参数优化、Mysql配置优化

    码字不易,转载请附原链,搬砖繁忙回复不及时见谅,技术交流请加QQ群:909211071 Mysql性能优化.Mysql参数优化.Mysql配置优化.Mysql参数优化对于不同的网站,及在线量等,以及机 ...

  4. python数据库优化_python | Mysql性能优化一

    对mysql优化是一个综合性的技术,主要包括 表的设计合理化(符合3NF) 添加适当索引(index) [四种: 普通索引.主键索引.唯一索引unique.全文索引] 分表技术(水平分割.垂直分割) ...

  5. 性能优化专题 - JVM 性能优化 - 04 - GC算法与调优

    目录导航 前言 Garbage Collect(垃圾回收) 如何确定一个对象是垃圾? 引用计数法 可达性分析 垃圾收集算法 标记-清除(Mark-Sweep) 复制(Copying) 标记-整理(Ma ...

  6. 【性能优化】MySQL性能优化之存储引擎调优

    1 MySQL总体架构介绍 1.1 MySQL总体架构介绍 引言 MySQL是一个关系型数据库 应用十分广泛 在学习任何一门知识之前 对其架构有一个概括性的了解是非常重要的 比如索引.sql是在哪个地 ...

  7. mysql rtree_优化体系--MySQL 索引优化(full-text、btree、hash、rtree)

    概述 目前大部分数据库系统及文件系统都采用B-Tree(B树)或其变种B Tree(B 树)作为索引结构.B Tree是数据库系统实现索引的首选数据结构.在MySQL中,索引属于存储引擎级别的概念,不 ...

  8. 性能优化专题十一--线程优化

    nice与进程调度 Linux中,使用nice value(以下成为nice值)来设定一个进程的优先级,系统任务调度器根据nice值合理安排调度. nice的取值范围为-20到19. 通常情况下,ni ...

  9. php面试专题---MySQL常用SQL语句优化

    php面试专题---MySQL常用SQL语句优化 一.总结 一句话总结: 原理,万变不离其宗:其实SQL语句优化的过程中,无非就是对mysql的执行计划理解,以及B+树索引的理解,其实只要我们理解执行 ...

最新文章

  1. Josephus问题
  2. SAP PM 初级系列22 - IW38可以批量处理维修工单
  3. 第8章3节《MonkeyRunner源码剖析》 5
  4. 深圳网络推广提醒大家做好URL标准化,网站排名“事半功倍”!
  5. 子网划分,9张表格搞定
  6. aspnet_Users中LastActiveDate的问题
  7. zcmu 1128 (数据处理)
  8. LVS(7)——NAT实践
  9. 多线程调用同一个对象的方法_多线程之如何创建和使用线程
  10. 三星电子通信撤出中国!
  11. Oh-My-Zsh 下远程ssh的乱码问题
  12. 苹果Mac上好用的分屏软件:Magnet
  13. 在 COMSOL 中模拟地震波的传播
  14. 使用JavaScript实现一个俄罗斯方块
  15. 《腾讯传》五、荡清环宇,横扫外来者; 千夫所指,腾讯“三宗罪”
  16. 文件服务器实现网络打印,图文详解 服务器共享打印设置
  17. ant 编译java_java之ant编译
  18. java兔子繁殖总数_Java 兔子繁殖迭代问题
  19. 取出字符串中数字的最大值
  20. 房屋翻新步骤有哪些?极家装修怎么样?

热门文章

  1. 实验四 主存空间的分配和回收
  2. wpa_supplicant学习
  3. urlrewrite使用小结
  4. java中运用label跳转
  5. 思科AP与交换机端口的配置
  6. [流水账]毕业?工作?
  7. WebService(Axis2)视频教程与QQ交流群发布
  8. MySQL 8.0 Invisible Indexes 和 RDS 5.6 Invisible Indexes介绍
  9. 常见的canvas优化——模糊问题、旋转效果
  10. 设计数据库字段或者java中使用boolean型时需谨慎