之前用的是mysql 5.6版本,执行select * from table group by colunm 是可以出结果的, 但是切换的5.7版本,这条sql就报错, Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.xxxxx.SEQ' which is not functionally dependent on co…
慢SQL消耗了70%~90%的数据库CPU资源: SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低: SQL语句可以有不同的写法: 1 不使用子查询 例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name='hechunyang'); 子查询在MySQL5.5版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表t2,当外表的数据很大时,查询速度会非常慢.在Mari…
前言 mysql的索引合并并不是什么新特性.早在mysql5.0版本就已经实现.之所以还写这篇博文,是因为好多人还一直保留着一条sql语句只能使用一个索引的错误观念.本文会通过一些示例来说明如何使用索引合并. 什么是索引合并 下面我们看下mysql文档中对索引合并的说明: The Index Merge method is used to retrieve rows with several range scans and to merge their results into one. The…
最近在学习林晓斌(丁奇)老师的<MySQL实战45讲>,受益匪浅,做一些笔记整理一下,帮助学习.如果有小伙伴感兴趣的话推荐原版课程,很不错. 1) --基础架构,一条SQL查询语句如何执行 MySQL大体来说可以分为Server层和存储引擎层两部分. Server层包括:连接器,查询缓存,分析器,优化器,执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期,时间,数学和加密函数等),所有跨存储引擎的功能在这一层实现,比如实现存储过程,触发器,视图等. 存储引擎层:负责数据的…
慢SQL消耗了70%~90%的数据库CPU资源: SQL语句独立于程序设计逻辑,相对于对程序源代码的优化,对SQL语句的优化在时间成本和风险上的代价都很低: SQL语句可以有不同的写法: 1 不使用子查询 例:SELECT * FROM t1 WHERE id (SELECT id FROM t2 WHERE name=’hechunyang’); 子查询在MySQL5.5版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是先查内表t2,当外表的数据很大时,查询速度会非常慢.在Mari…
写在前面的话:回想以前上班的时候,空闲时间还是挺多的,但是都荒废了.如今找工作着实费劲了.但是这段时间在极客时间买了mysql45讲,就好像发现了新大陆一样,这是我认真做笔记的第一天,说实话第一讲我已经看了有5遍了吧.今晚认真读了一遍也思考了一遍,打算做一下记录,也让自己再回想一遍,加深印象.其实第一次读也就读到第八讲,然后去面试的时候好多问题都跟这个课程的有关,还好也回答上来了,但感觉不是很深入回答的.现在也想明白了,学习知识这种事情不能操之过急,越着急越静不下心来.给自己定一个目标,从今天开…
1 基础架构:一条sql查询语句如何执行? 分析一个最简单的查询 mysql> select * from T where ID=10: MySQL基本架构示意图 大体来说,mysql可以分为server层和存储引擎层 Server层包括连接器.查询缓存.分析器.优化器.执行器等,涵盖mysql的大多数核心服务功能,以及所有的内置函数,所有跨存储引擎的功能都在这一层实现,比如存储过程.触发器.视图等. 而存储引擎层负责数据的存储和提取,其架构模式是插件式的,支持innodb.myisam.mem…
作为一名 Java开发人员,写 SQL 语句是常有的事,但是你知道 SQL 语句背后的处理逻辑吗?比如下面这条 SQL 语句: select * from user where id=1 执行完这条语句后,我们就会得到 id 为 1 的用户信息.那么对于这一条 SQL 语句,MySQL服务器做了哪些处理呢?这篇文章我们就一起打卡 MySQL 数据库中对 SQL 语句的处理逻辑. 了解 MySQL 数据库的 SQL 语句内部处理逻辑有什么好处?当我们碰到 MySQL 的一些异常或者问题时,就能够直…
写操作执行过程 如果这条sql是写操作(insert.update.delete),那么大致的过程如下,其中引擎层是属于 InnoDB 存储引擎的,因为InnoDB 是默认的存储引擎,也是主流的,所以这里只说明 InnoDB 的引擎层过程.由于写操作较查询操作更为复杂,所以先看一下写操作的执行图.方便后面解析. 组件介绍 Server层 1.连接器 1)负责与客户端的通信,是半双工模式,这就意味着某一固定时刻只能由客户端向服务器请求或者服务器向客户端发送数据,而不能同时进行. 2)验证用户名和密…
前言 有位朋友去阿里面试,他说面试官给了几条查询SQL,问:需要执行几次树搜索操作?我朋友当时是有点懵的,后来冷静思考,才发现就是考索引的几个基础知识点~~ 本文我们分九个索引知识点,一起来探讨一下.如果有不正确的话,欢迎指出哈,一起学习~ 公众号:捡田螺的小男孩 面试官考点之索引是什么? 面试官考点之索引类型 面试官考点之为什么选择B+树作索引结构 面试官考点之一次索引搜索过程 面试官考点之覆盖索引 面试官考点之索引失效场景 面试官考点之最左前缀 面试官考点之索引下推 面试官考点之大表添加索引…