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

MySQL SQL语句优化的10建议

另外字段尽可能用not null 3、当然无可避免某些字段会用到text,varchar等字符类型,最好将text艾段的单独出另外一个表出来(用主键关联好) 4、 字段的类型,以及长度,是一个很考究开发者优化功力的一个方面...同理,只要一行数据时尽量使用limit 1 6、绝对不要轻易用order by rand(),很可能会导致mysql的灾难 7、每个表都应该设置一个ID主键,最好的是一个INT型,并且设置上自动增加的AUTO_INCREMENT...8、拆分大的DELETE或INSERT语句,因为这两个操作是会锁表的,表一锁住了,别的操作都进不来了,就我来说有时候我宁愿用for循环来一个个执行这些操作 9、不要用永久连接mysql_pconnet(...);除非你真的非常肯定你的程序不会发生意外,不然很可能也会导致你的mysql死掉 10、永远别用复杂的mysql语句来显示你的聪明,就我来说看到一次关联了三四个表的语句,只会让人觉得很不靠谱

1.1K50

MySQL:一SQL语句的执行过程

select语句执行流程 第一步:连接器 连接器负责跟客户端建立连接、获取权限、维持和管理连接。如果用户名密码验证通过后,连接器会到权限表里面查出你拥有的权限。...第二步:查询缓存 当获取连接后,一SELECT语句会先去查询缓存,看之前是否执行过。如果获取到缓存后就执行返回,不然继续后面的步骤。...MYSQL8版本直接将查询缓存的整块功能删掉了。 第三步:分析器 分析器首先会做“词法分析”,MYSQL会识别出SQL语句里面的字符串是什么以及代表什么。...第五步:执行器 执行器执行SQL语句会对权限进行校验,如果有权限,就打开表继续执行。打开表的时候,执行器就会根据表的引擎定义,去使用这个引擎提供的接口。...图片 一update语句执行流程 update语句除了会执行上面的五步,还会涉及两个重要的日志模块。

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

SQLMysql中一sql语句的执行过程

接下来,通过一sql语句的执行来深入了解MySQL各个组件功能以及其作用。...3、解析SQL语句 在经过缓存后,就由「解析器」开始工作了,解析器的目的是检查sql语句是否正确以及将sql语句解析成MySQL能够理解的结构,也就是sql语法树。...一查询SQL语句的执行流程: 客户端通过连接器连接MySQL服务。 连接成功后向SQL接口发送SQL语句请求。...二 语句分析 2.1 查询语句 说了以上这么多,那么究竟一 sql 语句是如何执行的呢?其实我们的 sql 可以分为两种,一种是查询,一种是更新(增加,更新,删除)。...2.2 更新语句 以上就是一查询 sql 的执行流程,那么接下来我们看看一更新语句如何执行的呢?

29210

MySQL中一SQL语句是如何执行的?

例如一个简单的SQL语句mysql> select * from T where ID=10; ? 在 MYSQL 内部是怎么执行的呢?我们从头梳理一下。...分析器 client 和 server 连接完成了,向 server 发送 sql 请求,连接器不会直接处理,会转给分析器,对这条 sql 进行词法分析,例如识别出来“select”关键字,知道这是一个查询语句...优化器 经过分析器之后,MySQL就知道要做什么了,然后是怎么做,由优化器完成。...至此,这个语句就执行完了。 MySQL 整体结构 ? 总体来说,MySQL 分为2个层次:server 层、存储引擎层。...其实 server 层中还有一个查询缓存,一个语句进来后先看是否在缓存中有,如果有就直接返回,如果没有再走分析器,但由于实际环境中查询缓存的作用很小,上面的描述中就没有提及,而且在 MySQL 8 中已经去掉了查询缓存

1.5K20

SQL语句MySQL中如何执行的

前两天发了一SQL慢的原因有哪些,在那篇文章我没有说到优化器之类的,我觉得如果配合一SQL是如何执行的,会更好,所以特地找了一篇。...来源:JavaGuide | 作者:木木匠 本篇文章会分析一个 sql 语句MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。...3) 分析器 MySQL 没有命中缓存,那么就会进入分析器,分析器主要是用来分析 SQL 语句是来干嘛的,分析器也会分为几步: 第一步,词法分析,一 SQL 语句有多个字符串组成,首先要提取关键字,比如...二 语句分析 2.1 查询语句 说了以上这么多,那么究竟一 sql 语句是如何执行的呢?其实我们的 sql 可以分为两种,一种是查询,一种是更新(增加,更新,删除)。...2.2 更新语句 以上就是一查询 sql 的执行流程,那么接下来我们看看一更新语句如何执行的呢?

3.5K20

MySQL实战 -- 一SQL查询语句是如何执行的?

比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: mysql> select * from T where ID=10; 我们看到的只是输入一语句,返回一个结果,却不知道这条语句在...下面我给出的是 MySQL 的基本架构示意图,从中你可以清楚地看到 SQL 语句MySQL 的各个功能模块中的执行过程。 ?...而对于你确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定,像下面这个语句一样: mysql> select SQL_CACHE * from T where ID=10; 需要注意的是,MySQL...你输入的是由多个字符串和空格组成的一 SQL 语句MySQL 需要识别出里面的字符串分别是什么,代表什么。 MySQL 从你输入的"select"这个关键字识别出来,这是一个查询语句。...根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。

1.5K30

Mysql进阶篇--一sql查询语句如何执行

在开发阶段我们经常使用查询语句,但是一语句的查询是如何执行的呢,如下语句 mysql> select * from depart; 日常中,我们只看到返回一或多条结果,并没有过多的去关注查询语句具体要执行那些流程...显示指定查询缓存,也可以使用参数query_cache_type设置成DEMAND,禁止使用缓存 select SQL_CACHE * from dpet; 分析器 一查询语句在分析其中是要进行语法分析和词法分析...,词法分析就是要分析你的字符串代表的是什么,如select 就是代表查询的意思,字符串ID分析就是对应你的列ID, 语法分析是指当你的的sql语句是够符合sql的规范,如下面使用下面语句 mysql...line 1 由于你少打了一个s,就会保存提示You have an error in your SQL syntax 优化器 进过了分析器,知道了sql语句的含义,接下来,我们就要进行优化器的处理,...一语句的执行是有多个索引的,到底执行那个索引是由优化器来决定,比如下面的语句 select * from A a inner join B b on a.id=b.bid where a.name

94320

SQL语句MySQL中是如何执行的

来源:http://t.cn/E6U9Z9T ---- 概览 本篇文章会分析下一个sql语句mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的。...分析器 mysql 没有命中缓存,那么就会进入分析器,分析器主要是用来分析SQL语句是来干嘛的,分析器也会分为几步: 第一步,词法分析,一SQL语句有多个字符串组成,首先要提取关键字,比如select...二、语句分析 2.1 查询语句 说了以上这么多,那么究竟一sql语句是如何执行的呢?其实我们的sql可以分为2中,一种是查询,一种是更新(增加,更新,删除)。...: 先检查该语句是否有权限,如果没有权限,直接返回错误信息,如果有权限,在mysql8.0版本以前,会先查询缓存,以这条sql语句为key在内存中查询是否有结果,如果有直接缓存,如果没有,执行下一步。...2.2 更新语句 以上就是一查询sql的执行流程,那么接下来我们看看一更新语句如何执行的呢?

2K20

MySQL实战 -- 一SQL更新语句是如何执行的?

前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还记得,一查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。...那么,一更新语句的执行流程又是怎样的呢? 之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢?...我们还是从一个表的一更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c: mysql> create table T(ID int primary key, c int)...; 如果要将 ID=2 这一行的值加 1,SQL 语句就会这么写: mysql> update T set c=c+1 where ID=2; 前面我有跟你介绍过 SQL 语句基本的执行链路,这里我再把那张图拿过来...接下来,分析器会通过词法和语法解析知道这是一更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。

80630

Mysql实战之一SQL查询语句是如何执行的

1.前言作为一位开发人员,必然要和mysql打交道,平常肯定也写各种各样的sql语句,下面咱们先来看一个非常简单的sql语句select * from order where id = 10;我们看到这个...sql,都会说,很简单的一个查询语句,执行结果是查询order表中id=10的所有数据,但是大家知道这个sqlMysql内部是如何执行的吗?...根据你输入的sql语句,进行关键词匹配语句类型,比如是查询、删除、修改还是新增语句,识别数据库表是否存,字段是否存在。...优化器执行完成后,语句的执行就具体确定下来了,然后就会进入到执行器阶段了7.执行器mysql通过分析器知道了你要做什么,通过优化器知道了该怎么做,执行器就负责通过存储引擎执行sql了比如:select...的组成架构,和sql语句执行需要经过哪些阶段,希望可以通过本篇可以让你简单了解,一个sql语句的执行流程是什么样子的,后面的篇章会根据每个流程进行展开细聊,希望对你有所帮助,感谢您的阅读

1K10

一文搞懂MySQL中一SQL语句是如何执行的

语法分析:简单的讲语法分析就是检查SQL是否符合MySQL的语法和关键字,比如SELECT FROM A WHERE B=C给写成了SELECT FROM A WHERE B=C,这就会导致语法分析错误...,例如:图片语义分析(也叫词法分析):就是判断除了SQL关键字顺序之外的其他语句词汇符不符合当前的查询条件,比如FROM A,表A却不存在,SELECT B,字段B不存在等等,例如:图片语法检查顺序:SELECT...FROMJOINONWHEREGROUP BYHAVINGUNIONORDER BYLIMIT2.3 缓存通常我们执行成功后的语句和结果(仅限查询语句),MySQL会进行缓存,当我们再次对该语句进行查询时...SELECT * FROM A WHERE B=1 AND C=2 GROUP BY D ORDER BY D,因为是单表查询,而且在WHERE过滤的时候也比较简单,因此我们用流程图来表示下:图片4 总结一SQL...的执行过程能够帮助我们更好的了解MySQL内部的执行情况,但是对于SQL的优化而言,我们了解的知识还需要更多,比如使用explain查看SQL的执行计划,再针对执行计划对SQL进行进一步的优化等等我们都没有讲到

39611

Mysql实战之日志系统:一SQL更新语句是如何执行的

1.前言 上一篇咱们了解了MySQL 的执行过程,其中设计连接器、分析器、优化器、执行器和存储引擎,接下来我将给大家讲解一下在MySQL中一更新语句是如何执行。...首次分析更新语句执行 例如我们存在如下一下update 语句 update order set status = 2 where id = 10; 根据上一章,我们可以知道它的执行流程是如下图 图片 客服端先通过连接器连接数据库...,然后通过分析器发现是更新的SQL语句,优化器针对SQL语句进行优化,使用id索引,最后执行器执行SQL语句 到这里大家会说:这不是和查询语句一样吗,都是这些流程,其实不然,更新语句还设计两个比较重要的模块...因为一开始MySQL并没有InnoDB引擎,MyISAM是MySQL自带的引擎,但是MyISAM没有日志系统的功能,只存在server层的binlog 归档日志,InnoDB是后来集成到mysql里面去的...下面看一下两种日志的不同点 redo log是InnoDB引擎独有的;binlog是mysql共用的 redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是逻辑日志,记录的是这个语句的原始逻辑

79271

MySQL实战第一讲 - 一SQL查询语句是如何执行的?

比如,你有个最简单的表,表里只有一个 ID 字段,在执行下面这个查询语句时: select * from T where ID=10; 我们看到的只是输入一语句,返回一个结果,却不知道这条语句MySQL...而对于你确定要使用查询缓存的语句,可以用 SQL_CACHE 显式指定,像下面这个语句一样: select SQL_CACHE * from T where ID=10; 需要注意的是,MySQL 8.0...分析器 如果没有命中查询缓存,就要开始真正执行语句了。首先,MySQL 需要知道你要做什么,因此需要对 SQL 语句做解析。 分析器先会做“词法分析”。...你输入的是由多个字符串和空格组成的一 SQL 语句MySQL 需要识别出里面的字符串分别是什么,代表什么。 MySQL 从你输入的"select"这个关键字识别出来,这是一个查询语句。...根据词法分析的结果,语法分析器会根据语法规则,判断你输入的这个 SQL 语句是否满足 MySQL 语法。

53830

MySQL实战第二讲 - 一SQL更新语句是如何执行的?

在上一篇中,我们知道了一查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎。 那么,一更新语句的执行流程又是怎样的呢?...我们还是从一个表的一更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段 c: create table T(ID int primary key, c int); 如果要将...ID=2 这一行的值加 1,SQL 语句就会这么写:  update T set c=c+1 where ID=2; 前面我有跟你介绍过 SQL 语句基本的执行链路,这里我再把那张图拿过来,你也可以先简单看看这个图回顾下...接下来,分析器会通过词法和语法解析知道这是一更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。...具体来说,当有一记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log(粉板)里面,并更新内存,这个时候更新就算完成了。

37930

这样的SQL语句最多能查询出来多少记录?

前言 今天突发奇想,一这样的 SQL 语句【SELECT * FROM user】能查询出多少记录?...  1、3 点好理解,这也同时解释了,如果你发送的一 SQL 语句特别大可能会执行不成功的原因,尤其是insert update 这种,单个 SQL 语句不是没有上限的,不过这种情况一般不是因为 SQL...64M,又说这是限制单行数据的,单行数据有这么大吗?...---- 答案   文章写到这里,其实答案已经逐渐浮出水面了,“一 SQL 最多能查询出来多少记录?”...写在最后的话   本文花费大量时间介绍了一查询SQL语句最多能查询出多少记录,希望能帮助到各位小伙伴,码文不易,还望各位大佬们多多支持哦,你们的支持是我最大的动力!

27240

这500多个字段引起的问题,大部分DBA都搞不定

我们知道,无论是 MySQL 还是 Oracle,或者是 SQL Server,其实都有这么两层存在,一个是 Server 层,另一个是存储引擎层。...下面是关于最大长度的限制,官方文档相关说明: Limits on Table Column Count and Row Size  https://dev.mysql.com/doc/refman/5.7...由于innodb为了保证B+TREE是一个平衡树结构,一记录的长度,不能超过innodb_page_size大小的一半。...除了长度,对每个表有多少个列的个数也是有限制的,这里简单说一下: MySQL Server层规定一个表的字段个数最大为 4096; InnoDB层规定一个表的字段个数最大为1017; [官方文档相关说明...2、或者进行分表创建,限制单表的字段个数,从业务层面规避创建单表字段过多的问题,通过编写规范的SQL语句以及采用合适的集群的架构,才能发挥出MySQL自身的潜力。 至此,答案已经非常清晰了。

1.7K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券