当前位置: 首页 > 编程日记 > 正文

【数据库优化专题】MySQL视图优化(一)

本期数据库优化专题分享,为大家带来的是DBA+社群MySQL领域原创专家——李海翔所著的MySQL视图优化系列文章。以下是第一部分的内容,未完部分敬请关注后续更新。

专家简介

20151106021005275.png

李海翔

网名:那海蓝蓝

DBA+社群MySQL领域原创专家

从事数据库研发、数据库测试与技术管理等工作10余年,对数据库的内核有深入研究,擅长于PostgreSQL和MySQL等开源数据库的内核与架构。现任职于Oracle公司MySQL全球开发团队,从事查询优化技术的研究和MySQL查询优化器的开发工作。著有《数据库查询优化器的艺术》一书。

一、什么是视图

这个标题似乎有点简单了,一些人会想:作为一名数据库从业者,作为一名经验丰富的DBA,天天与视图打交道, 怎么能不知道什么是视图呢?

请在继续阅读之前,微闭双目,休息之余想一想, 什么是视图?思索之后,且与如下标准定义做个比较。

SQL标准定义是如下定义视图的:

20151106020748905.jpg

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

相关文章:

使用Repeater的Template

.NET FX提供了一个方法,就是使用Template来在程序运行时对Repeater的显示进行控制. 这里我就不多说了,可以去看MSDN中的相关资料.(嘿嘿,其实我也没搞多少 )..其实主要是private void lc_DataBinding(object sender, EventArgs e)函数,在DataSource中的数据进行Bind的时候,每Bin…

获取文件最后修改时间的VC代码

作者:朱金灿来源:http://blog.csdn.net/clever101很多时候我们需要知道系统是什么时候编译生成的。我想到的一个直接的思路的是获取exe文件的最后修改时间。下面的一段代码可以做到这一点:CWinApp* pApp AfxGetApp();std::string strAppName…

BAT新风向标:程序员有福利了!

人工智能已成为新时代的风向标,如果你是对人工智能感兴趣的互联网工作者、大学生、研究生并期望在 AI 方向发展,建议你一定要深入学习一下人工智能。因为,未来将是人工智能的时代!为什么会有这个判断呢?第一&#xff0…

《C++代码设计与重用》——1.2 重用的神话

本节书摘来自异步社区出版社《Imperfect C中文版》一书中的第1章,第1.2节,作者: 【美】Martin D.Carroll , Margaret A.Ellis,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.2 重用的神话 C代码设计与重用1.2 重用的神…

控件的呈现方法(Rendering)的内核

Asp.net中所有的控件都是从System.Web.UI.Control类,在control类中定义了三个与呈现有关的方法,分别是Render方法,RenderChildren方法和RenderControl方法.其中RenderControl方法是public的方法,先看看这三个方法的实现: Public void RenderControl(HtmlTextWriter writer) {//…

清华、北大教授同台激辩:脑科学是否真的能启发AI?

作者 | 高卫华出品 | AI科技大本营头图 | CSDN下载自视觉中国广义的智能科学是研究智能背后的科学,需要不断扩展科学研究范围,没有最后的疆域。但脑在几千年内的进化中都相对静止,因此脑科学是“自然科学最后的疆域”。脑科学是一个重要的研究…

CentOS 5 升级mysql5.1启动服务时报错

CentOS 5 升级mysql5.1启动服务时报错: [ERROR] Error message file /usr/share/mysql/english/errmsg.sys had only 481 error messages, but it should contain at least 641 error messages.解决方法是:1.mv /usr/share/mysql/english/errmsg.sys /us…

《JavaScript设计模式》——11.2 一切只因跨域

本节书摘来自异步社区《JavaScript设计模式》一书中的第11章,第11.2节,作者:张容铭著,更多章节内容可以访问云栖社区“异步社区”公众号查看 11.2 一切只因跨域 “哦,为什么会出现,什么是跨域?…

程序员:我不学Python了!!

总学不会Python的原因,归根结底只有一个——学习方法不对。 作为一个唯一将易用性与功能取得平衡的编程语言,无论是编程新手还是多年经验的BATJZ技术大牛,都无可否认如今Python对于一个程序员职业发展的重要性。 所以,你现在能在网…

Javascript Tip(1) 操作剪贴板

javascript可以轻松操作客户端剪贴板内容,不过只适用IE5以上浏览器 javascript可以使用window.clipboardData对象处理剪贴板内容 保存到剪贴板的方法 setData(param1, param2) param1 :数据类型 text 或 URL等. param2 :数据内容 从剪贴板读出数据的方法 getdata(p…

MySQL 自增ID

http://hi.baidu.com/517898291/item/9cac18066030cac6905718e0 http://jiangshuiy.iteye.com/blog/751060 Sina 转载: MySQL: Get next AUTO_INCREMENT value from/for table Note to self: To get the next auto_increment value from a table run this query: SE…

《算法基础:打开算法之门》一1.5 拓展阅读

本节书摘来自华章出版社《算法基础:打开算法之门》一书中的第1章,第1.5节,作者 [美]托马斯 H 科尔曼(Thomas H Cormen),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.…

Python画出心目中的自己

作者 | 李秋键责编 | 晋兆雨头图 | CSDN下载自视觉中国引言:人脸图像的生成在各个行业有着重要应用,例如刑事调查、人物设计、教育培训等。然而一幅逼真的人脸肖像,对于职业画家也要至少数小时才能绘制出来;对于从未接触过绘画的新…

认识 PHP 的hash函数

Hashing function (散列函式) 在网页应用中被广泛采用,从数码签署、错误检测、登入验证、到压缩储存空间,由于它的原理比较复杂,很多人把它跟加密函式混淆,对于如何运用hash function,如何选择合适的hash function&…

const在函数前与函数后的区别 [转]

[转] http://blog.csdn.net/clozxy/article/details/5679887 一 const基础 如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况: int b 500; const int* a &b; [1] int const …

《HTML5游戏编程核心技术与实战》——2.8 小结

本节书摘来自异步社区《HTML5游戏编程核心技术与实战》一书中的第2章,第2.8节,作者: 向峰 更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 小结 本章介绍了canvas的一些常用的操作,作为HTML5的最重要的特性,canvas使得…

IANA保留地址

IANA 就是指(Internet Assigned Numbers Authority) ,Internet号分配机构。负责对IP地址分配规划以及对TCP/UDP公共服务的端口定义。国际互联网代理成员管理局(IANA)是在国际互联网中使用的IP 地址、域名和许多其它参数的管理机构。IP地址、自…

张亚勤世界互联网大会谈AI:将变革传统行业,催生新业态

11月23日至24日,一年一度的世界互联网大会互联网发展论坛如期召开。全球疫情冲击下,科技创新成为了海内外共同关注的焦点。其中,人工智能作为新一轮科技革命和产业变革的重要驱动力量,同样饱受关注。 在24日上午的"人工智能…

如何通过参数来切换图表和数据

在报表设计的过程中有时候我们想在一张报表中既可以看到数据又可以看到图表,但是如果把数据和图表放在同一页面中似乎不太美观,所以我们可以用参数来控制是要显示数据还是显示图表。下面来看看如何实现通过参数来切换图表和数据 设计一张既有数据又有图表…

安装 Fedora 22 后要做的事情

Red Hat操作系统的社区开发版的最新成员Fedora 22,已经于2015年5月26日发布了。对这个经典的Fedora发行版的发布充斥着各种猜测和预期,而最终Fedora 22推出了许多重大变化。 就初始化进程而言,Systemd还是个新生儿,但它已经准备好…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言第二部552-556条

552. 无人驾驶与自动驾驶 无人驾驶与自动驾驶技术属于人工智能技术范畴,近年来有长足进步。无人驾驶与自动驾驶的实现的与路况密切有关。 根据国际自动机工程师学会2004年制度的“无人驾驶与自动驾驶技术界定标准”,将路况分成5级: 根据美国…

Web的桌面提醒(Popup)

大多数Windows程序都有桌面提醒(Popup)功能,如Msn Messenger,Outlook2003,FoxMail,SharpReader等,对用户来说可以非常的方便最新的信息。 在Web中借用IE5.5的Popup,也可以实现类似的…

linux的裁剪过程,让你的小linux更加完善,赶快试试吧!

一、系统启动流程: 1、POST-->BIOS(Boot Sequence)--> BootLoader(MBR)--> Kernel(initrd,initramfs)--> init (/etc/inittab) 第一步首先加电自检,计算机本身不会执行程序,由此它会…

《Adobe Premiere Pro CC经典教程(彩色版)》——2.2 建立项目

本节书摘来自异步社区《Adobe Premiere Pro CC经典教程(彩色版)》一书中的第2课,第2.2节,作者 【英国】Maxim Jago(马克西姆 亚戈),译者 陈昕昕,郭光伟 ,更多章节内容可以…

针对《评人工智能如何走向新阶段》一文,继续发布国内外的跟贴留言第二部557-561条如下

557,解决最后一公里短板,提升语义网络内涵,使之具有实现可解释人工智能(或实现认知智能)的能力,尚待努力! 在跟贴263、521中,谈到提升语义网络内涵的解决之道,要坚持数据…

struts2+hibernate+Spring分层开发

web.xml中要加Spring的listener,struts2的filter的配置。UI struts2: jsp struts.xml ActionSpring ActionSpring:applicationContent-actions.xml Service Spring:applicationContent-services.xml DAO Entity DAL hibernate: …

DataGrid鼠标事件处理

http://blog.csdn.net/bgu/完成功能是DataGrid的页面选中事件、鼠标事件、双击事件改变TR的色彩。代码很简单,只是一点JS操作。JS文件:GridControl.js/*------------ DataGrid鼠标事件处理 ------------功能:用于数据梆定后鼠标事件参数说明:obj:对像thisfontColor:…

《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站

本节书摘来自异步社区《精通 ASP.NET MVC 3 框架(第三版)》一书中的第2章,第1节,作者: 【美】Adam Freeman , Steven Standerson,译者: 林逸 , 李萍 , 更多章节内容可以访问云栖社区…

DataGrid鼠标事件方法

http://blog.csdn.net/bgu/ JS文件源码:GridColorControl.js/*-----------------调用说明-----------------说明:可用于架设页面事件。入口函数:OnFocusSet(....)如:OnFocusSet( "#000000","#FFFFFF","#…

张亚勤谈数字化3.0:由物理与生物世界的数字化构成 | WIC

11月23日至24日,一年一度的世界互联网大会互联网发展论坛如期召开。全球疫情冲击下,科技创新成为了海内外共同关注的焦点。其中,人工智能作为新一轮科技革命和产业变革的重要驱动力量,同样饱受关注。在24日上午的“人工智能&#…