2.6.5 SQL提示目前tb_user表的数据情况如下:索引情况如下:把上述的 idx_user_age, idx_email 这两个之前测试使用过的索引直接删除。drop index idx_user_age on tb_user;
drop index idx_email on tb_user;
A. 执行SQL : explain select
......
372
0
0
2022-11-23
3.6.4.4 or连接条件用or分割开的条件, 如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。explain select * from tb_user where id = 10 or age = 23;
explain select * from tb_user where phone = '17799990017'
......
368
0
0
2022-11-23
2.6.3 范围查询联合索引中,出现范围查询(>,<),范围查询右侧的列索引失效。explain select * from tb_user where profession = '软件工程' and age > 30 and status
= '0';
当范围查询使用> 或 < 时,走联合索引了,但是索引的长度为49,就说
......
332
0
0
2022-11-23
2.6 索引使用2.6.1 验证索引效率在讲解索引的使用原则之前,先通过一个简单的案例,来验证一下索引,看看是否能够通过索引来提升数据查询性能。在演示的时候,我们还是使用之前准备的一张表 tb_sku , 在这张表中准备了1000w的记录。这张表中id为主键,有主键索引,而其他字段是没有建立索引的。我们先来查询其中的一条记录,看看里面的字段情况,执行如下SQ
......
392
0
0
2022-11-23
2.5.3 profile详情show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。通过have_profiling参数,能够看到当前MySQL是否支持profile操作:SELECT @@have_profiling ;
可以看到,当前MySQL是支持 profile操作的,但是开关是关闭的。可以通过set语句在session
......
374
0
0
2022-11-23
2.5 SQL性能分析2.5.1 SQL执行频率MySQL 客户端连接成功后,通过 show [session|global] status 命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:-- session 是查看当前会话 ;
-- global 是查询全局数据 ;
SH
......
326
0
0
2022-11-23
2.4 索引语法1). 创建索引CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (
index_col_name,... ) ;
2). 查看索引SHOW INDEX FROM table_name ;
3). 删除索引DROP INDEX index_name ON table_
......
373
0
0
2022-11-23
2.2.5 HashMySQL中除了支持B+Tree索引,还支持一种索引类型---Hash索引。1). 结构哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中。如果两个(或多个)键值,映射到一个相同的槽位上,他们就产生了hash冲突(也称为hash碰撞),可以通过链表来解决。2). 特点A. Hash索
......
324
0
0
2022-11-23
2.2.3 B-TreeB-Tree,B树是一种多叉路衡查找树,相对于二叉树,B树每个节点可以有多个分支,即多叉。以一颗最大度数(max-degree)为5(5阶)的b-tree为例,那这个B树每个节点最多存储4个key,5个指针:我们可以通过一个数据结构可视化的网站来简单演示一下。https://www.cs.usfca.edu/~galles/visua
......
330
0
0
2022-11-23
2.2 演示表结构及其数据如下:假如我们要执行的SQL语句为 :select * from user where age = 45;1). 无索引情况在无索引情况下,就需要从第一行开始扫描,一直扫描到最后一行,我们称之为 全表扫描,性能很低。2). 有索引情况如果我们针对于这张表建立了索引,假设索引结构就是二叉树,那么也就意味着,会对age这个字段建立一个二
......
364
0
0
2022-11-23
1.3.2 MyISAM1). 介绍MyISAM是MySQL早期的默认存储引擎。2). 特点不支持事务,不支持外键支持表锁,不支持行锁访问速度快3). 文件xxx.sdi:存储表结构信息xxx.MYD: 存储数据xxx.MYI: 存储索引1.3.3 Memory1). 介绍Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这
......
366
0
0
2022-11-23
1.3 存储引擎特点上面我们介绍了什么是存储引擎,以及如何在建表时如何指定存储引擎,接下来我们就来介绍下来上面重点提到的三种存储引擎 InnoDB、MyISAM、Memory的特点。1.3.1 InnoDB1). 介绍InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在 MySQL 5.5 之后,InnoDB是默认的MySQL 存储引擎。2). 特点DM
......
373
0
0
2022-11-23
1.2 存储引擎介绍大家可能没有听说过存储引擎,但是一定听过引擎这个词,引擎就是发动机,是一个机器的核心组件。比如,对于舰载机、直升机、火箭来说,他们都有各自的引擎,是他们最为核心的组件。而我们在选择引擎的时候,需要在合适的场景,选择合适的存储引擎,就像在直升机上,我们不能选择舰载机的引擎一样。而对于存储引擎,也是一样,他是mysql数据库的核心,我们也需要
......
375
0
0
2022-11-23
1. 存储引擎1.1 MySQL体系结构1). 连接层最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务器也会为安全接入的每个客户
......
342
0
0
2022-11-23
来给大家区分下mysql复制表的两种方式。第一、只复制表结构到新表create table 新表 select * from 旧表 where 1=2或者create table 新表 like 旧表第二、复制表结构及数据到新表create table 新表 select * from 旧表另一种完整复制表的方法:CREATE TABLE targetTab
......
324
0
0
2022-11-20