首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库MySQL-MySQL的执行顺序

五、MySQL的执行顺序 MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FROM操作,最后执行的是LIMIT操作。...其中每一个操作都会产生一张虚拟的表,这个虚拟的表作为一个处理的输入,只是这些虚拟的表对用户来说是透明的,但是只有最后一个虚拟的表才会被作为结果返回。...如果没有在语句中指定某一个子句,那么将会跳过相应的步骤。 ? 下面我们来具体分析一下查询处理的每一个阶段 FORM: 对FROM的左边的表和右边的表计算笛卡尔积。...JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3, rug from子句中包含两个以上的表的话...只有符合的记录才会被插入到虚拟表VT4中。 GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5.

3.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL建表数据类型的选择

    首先数据选择有几个简单原则: 更小的通常更好。一般情况下,应该尽量使用可以正确存储数据的最小数据类型。例如只需要存 0~200,tinyint unsigned 更好。...如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更复杂。特别是计划在列上建索引,就应该尽量避免设计成可为 NULL 的列。...char 类型是定长的:MySQL 总是根据定义的字符串长度分配足够的空间。 char 存储会删除存储数据的末尾空格;varchar 不会。...(准确来说是 MySQL 4.1 以后的版本 varchar 不会删除存储数据的末尾空格) blob 和 text 类型 blob 和 text 都是为了存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储...有时候人们会将 unix 时间戳存储为整数值,但这不会带来任何收益。用整数保存时间戳的格式通常不方便处理,所以我们不推荐这么做。

    5.3K10

    MySQL数据备份方法的选择和思考

    // MySQL数据备份方法的选择和思考 // 从事DBA的行业也有两年多了,在数据备份上无论是理论和实践上,都积累了一些经验,恰逢这两天又出现一些数据备份方面的问题,这里,我将之前遇到过的数据备份方法简单做个整理...我自己总结了以下方法: 1、rsync、cp拷贝文件 这种方法比较暴力,就是直接停止MySQL数据库,然后通过cp、rsync这种Linux物理文件复制命令,来实现数据的备份。...这种备份方法适合单个表的某一部分数据变更前的备份。 3、延时从库 在MySQL中,这种备份方案相对比较少,在MongoDB中,延时从库非常常见。...4、逻辑备份mysqldump 这可能是最常见的一种MySQL备份方式了,mysqldump这个官方提供的备份工具,可以提供给你某个时间点的一致性快照,可以很清楚的知道当前的时间点,MySQL数据库执行到了那个...但是目前,线上环境使用的比较少,原因是大部分国产数据库目前都停留在MySQL5.7版本,当然,8.0是趋势,没升级的赶快升级吧。

    1.1K30

    MySQL优化:选择合适的数据类型

    前言 MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储哪种类型的数据,下面几个简单的原则都有助于做出更好的选择。...但是要确保没有低估需要存储的值的范围,因为在schema中的多个地方增加数据类型的范围是一个非常耗时和痛苦的操作。如果无法确定哪个数据类型是最好的,就选择你认为不会超过范围的最小类型。...尽量避免NULL 很多表都包含可为NULL (空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性"3。...如果查询中包含可为NULL的列,对MySQL来说更难优化,因为可为NULL的列使得索引、索引统计和值比较都更复杂。可为NULL的列会使用更多的存储空间,在MySQL里也需要特殊处理。...在为列选择数据类型时,第一步需要确定合适的大类型:数字、字符串、时间等。下一步是选择具体类型。

    80910

    mysql 数据库中的三种判断是否包含总结

    应用场景: 1:在使用mysql数据库进行存储数据的时候,有时候,一个字段,要存储使用逗号分隔的多个数据,在查询的时候,传递的是一个keyword,需要在逗号分隔的字段中进行查询,这种情况怎么处理?...比如: 在爬虫爬取的时候,指定关键字查询,关键字可以是多个用逗号分隔。数据库中对应的字段是:key_word,存储的数据,比如:凯哥Java,kaigejava这样的。...那么现在我要查询的关键字是:凯哥java这样的。怎么查询呢? 2:第二种情况,我们在更新的是,先判断如果指定字段,是否包含指定字符串。如果不包含,在原有字段上添加指定的字段。...我就想要【理财】这个keyword的数据。这样多数据中精确查询怎么解决?...再次查询看看http://www.是否添加到数据库了。 ? 已经添加上了。问题已经解决。 需要注意的是:在mysql中字符串连接不是使用【+】而是使用【concat函数】

    2K60

    mysql数据类型的选择

    1、整数和浮点数 如果不需要小数部分,就是用整数来保存数据;如果需要小数部分,就是用浮点数。对于浮点数据列,存入的数值会对该列定义的小数位进行四舍五入。...2、浮点数和定点数 浮点数FLOAT、DOUBLE相对于定点数DECIMAL的优势是:在长度一定的条件下,浮点数能表示更大的数据范围。...CHAR会自动删除插入数据的尾部空格,VARCHAR不会删除尾部空格 CHAR是固定长度,所以处理速度比VARCHAR快,但是浪费存储空间。...5、ENUM与SET ENUM只能取单个值,它的数据列表是一个枚举集合。它的合法列表最多有65535个成员。...ENUM和SET的值是以字符串的形式出现的,但是在MYSQL内部以数值的形式存储它们。 6、BLOB和TEXT BLOB是二进制字符串,TEXT是非二进制字符串,两者均可存放大容量的信息。

    1K20

    MySQL(1)——数据类型的选择(一)

    一、三个原则 更小的通常更好:在符合条件的情况下,选择最小的数据类型更好。因为它们占用更少的磁盘、内存和 CPU 缓存。 简单就好:简单的数据类型的操作通常需要更少的 CPU 周期。...尽量避免 NULL:如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更负责。...MySQL 可以为整数类型指定宽度,比如 INT(11),对大多数应用来说是没有意义的,对于存储来说也没有影响。 三、实数类型 可以使用 DECIMAL 存储比 BIGINT 还大的整数。...数据量大的情况下,可以使用 BIGINT 替代,进行相应位数的乘除倍数就行,存储比 DECIMAL 小,计算精确。...四、VARCHAR 和 CHAR 类型 varchar ① varchar 是变长的,比定长更节省空间,因为它仅使用必要的空间。

    1.1K20

    数据库MySQL-选择合适的数据类型

    三、数据库结构的优化 1、选择合适的数据类型 1、数据类型选择 数据类型的选择,重点在于“合适”二字,如何确定选择的数据类型是否合适了? 1、使用可以存下你的数据的最小的数据类型。...(时间类型数据:可以使用varchar类型,可以使用int类型,也可以使用时间戳类型) 2、使用简单的数据类型,int要比varchar类型在mysql处理上简单。...(int类型存储时间是最好的选择) 3、尽可能的使用not null定义字段。...结论: 1、unix_timestamp()函数是将日期格式的数据转换为int类型 2、FROM_UNIXTIME(timestr)函数是将int类型转换为时间格式 案例二:ip地址的存储 在我们的外部应用中...,都要记录ip地址,大部分场合都是varchar(15)进行存储,就需要15个字节进行存储,但是bigint只需要8个字节进行存储,当数据量很大的时候(千万级别的数据),相差7个字节,但是不能小看这7个字节

    2.1K30

    数据库mysql的执行顺序(sql语句大全实例教程)

    目前还在查看,但是在查阅资料时发现了一些有益的知识,给大家分享一下,就是关于sql以及MySQL语句执行顺序: sql和mysql执行顺序,发现内部机制是一样的。最大区别是在别名的引用上。...第一步:首先对from子句中的前两个表执行一个笛卡尔乘积,此时生成虚拟表 vt1(选择相对小的表做基础表)。...对表进行排序的查询可以返回一个对象,这个对象包含特定的物理顺序的逻辑组织。这个对象就叫游标。正因为返回值是游标,那么使用order by 子句查询不能应用于表表达式。...二、mysql的执行顺序 1、SELECT语句定义 一个完成的SELECT语句包含可选的几个子句。...希望此篇文章能让大家对mysql执行顺序有一个了解,另外为大家推荐两篇MySQL优化的文章: MySQL优化之推荐使用规范 MySQL优化之my.conf配置详解 发布者:全栈程序员栈长,转载请注明出处

    1.6K20

    MySQL数据类型的优化选择

    :精确(只是存储格式,在计算中会转为double类型) 浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。...Char:定长字符串(MySQL会删除所有末尾空格) 优点:不易产生碎片 适用:存储密码的MD5值;经常变更的数据; 大型数据类型: Blob:二进制 Text:字符 特殊性:mysql将blob和text...值当做一个独立的对象处理,当值太大时,innodb在值内存储一个指针,外部存储区域存储实际的值;mysql对blob和text的排序,只对每列的最前max_sort_length进行排序;mysql不能将列的全部长度字符串进行索引...,也不能使用这些索引进行排序; 枚举类型ENUM: mysql在存储枚举类型时非常紧凑; Mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数字-字符串”的映射关系的查找表...):4字节;依赖于时区;保存1970.1.1以来的秒数;列默认为not null; Timestamp的特殊性:如果插入数据时没有指定第一个timestamp列的值,mysql则设置这个值为当前时间;

    72520

    MySQL性能优化(二):选择优化的数据类型

    [选择优化的数据类型_logo.png] 前期回顾: MySQL性能优化(一):MySQL架构与核心问题 良好的设计是高性能的基石,应该根据系统的实际业务需求、使用场景进行设计、优化、再调整,在这其中往往需要权衡各种因素...MySQL支持的数据类型非常之多,对于选择恐惧症的小伙伴而言,苦不可言。...本文将介绍如何选择优化的数据类型,来提高MySQL的性能,将会选取最为常用的类型进行说明,便于在实际开发中创建表、优化表字段类型时提供帮助。...1.VARCHAR VARCHAR类型用于存储可变长字符串,它比定长类型更节省空间,因为它仅使用必要的空间(例如,越短的字符串使用最少的空间)。...有些工具生成的东西,在存储任何数据都会使用很大的VARCHAR类型,这往往是不正确的。如果是自动生成的,一定要反复检查确认是否合理。

    1.4K00

    MySql中varchar和char,如何选择合适的数据类型?

    背景 学过MySQL的同学都知道MySQL中varchar和char是两种最主要的字符串类型,varchar是变长的类型,而char是固定长度。...那关于如何选择类型就成为令人头疼的事,很多初学者为了保证业务兼容性强,存储字符串类型一律都是varchar类型。这是不妥的,需要根据varchar和char的特性来进行选择。...varchar和char数据类型的区别 varchar类型用于存储可变长的字符串,是比较常见常用的字符串数据类型,在存储的字符串是变长时,varchar更加节约空间。...在存储数据时,MySQL会删除所有文末的空格,所以,即便你存储的是:'abc ',注意这个字符串末尾是有空格的,也会在存储时把这个空格删掉,这点需要注意。...: 会删除列末尾的空格信息 参考: 《高性能MySQL第3版》第四章

    2.5K20

    检查 Python 中给定字符串是否仅包含字母的方法

    Python被世界各地的程序员用于不同的目的,如Web开发,数据科学,机器学习,并通过自动化执行各种不同的过程。在本文中,我们将了解检查python中给定字符串是否仅包含字符的不同方法。...检查给定字符串是否仅包含字母的不同方法 等阿尔法函数 这是检查 python 中给定字符串是否包含字母的最简单方法。它将根据字符串中字母的存在给出真和假的输出。...这是一种非常简单的方法,用于检查字符串是否仅包含字母。...: True ASCII 值 这是一个复杂的方法,但它是查找字符串中是否仅包含字母的非常有效的方法。...使用这些方法,您可以在 Python 程序中快速确定字符串是否仅包含字母。

    27030
    领券