随笔分类 - MySQL
摘要:优化嵌套查询 嵌套查询(子查询)可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。嵌套查询写起来简单,也容易理解。但是,有时候可以被更有效率的连接(JOIN)替代。 现在假如要找出从来没有在网站中消费的客户,也就是查询在客户customer表中但是不在支付
阅读全文
摘要:本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的朋友们可以先看一下我之前写过的索引相关文章。现在让我们开始吧。 MySQL中的两种排序方式 1. 通过有序索引顺序扫描直接返回有序数据 因为索引的结构是B+树,索引中的数据是按照一定顺序进行排列的,所以在排序查
阅读全文
摘要:在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。 MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构。 MyISAM会按照数据插入的顺序分配行号,从0开始,然后按照数据插入的顺序存储在
阅读全文
摘要:上一篇文章我们介绍了 "索引背后的数据结构" ,这篇文章我们来介绍影响索引数据结构选型的因素——存储器存取。 主存存取原理 主存的构成 主存储器(简称主存或内存)包括存取体、各种逻辑部件及控制电路等。存储体由许多存储单元组成,每个存储单元又包含若干个存储元件,每个存储元件能寄存一位二进制代码“0”或
阅读全文
摘要:在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。 B Tree B Tree是一种 平衡 的多路 查找(又称排序) 树,在文件系统中和数据库系统中有所应用。主要用作文件的索引。 其中
阅读全文
摘要:上篇文章中介绍了索引的基本内容,这篇文章我们继续介绍索引优化实战。在介绍索引优化实战之前,首先要介绍两个与索引相关的重要概念,这两个概念对于索引优化至关重要。 本篇文章用于测试的user表结构: 索引相关的重要概念 基数 单个列唯一键(distict_keys)的数量叫做基数。 user表的总行数是
阅读全文
摘要:本篇文章,我们将从索引基础开始,介绍什么是索引以及索引的几种类型,然后学习如何创建索引以及索引设计的基本原则。 本篇文章中用于测试索引创建的user表的结构如下: 什么是索引 索引(在 MySQL 中也叫“键key”)是存储引擎快速找到记录的一种数据结构 ——《高性能MySQL》 我们需要知道索引其
阅读全文
摘要:在MySQL中,我们可以通过 EXPLAIN 命令获取MySQL如何执行SELECT语句的信息,包括在SELECT语句执行过程中表如何连接和连接的顺序。 下面分别对 EXPLAIN 命令结果的每一列进行说明: select_type :表示SELECT的类型,常见的取值有: | 类型 | 说明 |
阅读全文
摘要:在上篇文章中我们介绍了 "基于Docker的Mysql主从搭建" ,一主多从的搭建过程就是重复了一主一从的从库配置过程,需要注意的是,要保证主从库my.cnf中 server id 的唯一性。搭建完成后,可以在主库 查看有哪些从库节点。 我们来简单了解一下Mysql主从复制的过程: (1) mast
阅读全文
摘要:为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,启动容器在秒级别 利用Docker搭建主从服务器 首先拉取docker镜像,我们这里使
阅读全文