展开
拓展 关闭
订阅号推广码
GitHub
视频
公告栏 关闭

随笔分类 -  数据库 / 关系型

摘要:简介 Index Condition Pushdown(ICP)是MySQL5.6中新特性,是一种在存储擎层使用索引过滤数据的优化方式。 从二级索引中查找数据,如果二级索引中已经有了要筛选的列,但是又不能使用索引,会先从该二级索引筛选完以后再回表。 好处:ICP可以减少存储引擎必须访问基表的次数和M 阅读全文
posted @ 2022-06-17 16:42 DogLeftover 阅读(62) 评论(0) 推荐(0) 编辑
摘要:简介 索引是高效找到行的一个方法,但是一般数据库也能使用索引找到一个列的数据,因此它不必读取整个行。毕竟索引叶子节点存储了它们索引的数据; 当能通过读取索引就可以得到想要的数据,那就不需要读取行了。一个索引包含了满足查询结果的数据就叫做覆盖索引。 非聚簇复合索引的一种形式,它包括在查询里的SELEC 阅读全文
posted @ 2022-06-17 16:42 DogLeftover 阅读(73) 评论(0) 推荐(0) 编辑
摘要:GROUP BY优化 1、group by使用索引的原则几乎跟order by一致,group by即使没有过滤条件用到索引,也可以直接使用索引。 2、group by先排序再分组,遵照索引建的最佳左前缀法则 3、当无法使用索引列,增大max_length_for_sort_data和sort_bu 阅读全文
posted @ 2022-06-17 15:00 DogLeftover 阅读(205) 评论(0) 推荐(0) 编辑
摘要:子查询 子查询是 MySQL 的一项重要的功能,可以帮助我们通过一个 SQL 语句实现比较复杂的查询。但是,子查询的执行效率不高 ① 执行子查询时,MySQL需要为内层查询语句的查询结果 建立一个临时表 ,然后外层查询语句从临时表 中查询记录。查询完毕后,再 撤销这些临时表 。这样会消耗过多的CPU 阅读全文
posted @ 2022-06-17 11:18 DogLeftover 阅读(85) 评论(0) 推荐(0) 编辑
摘要:Simple Nested-Loop Join(简单嵌套循环连接) 从表A中取出一条数据1,遍历表B,将匹配到的数据放到result…以此类推,驱动表A中的每一条记录与被驱动表B的记录进行判断 Index Nested-Loop Join(索引嵌套循环连接) Index Nested-Loop Jo 阅读全文
posted @ 2022-06-17 11:03 DogLeftover 阅读(72) 评论(0) 推荐(0) 编辑
摘要:左外连接 # 创建分类表 CREATE TABLE IF NOT EXISTS `type` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `card` INT(10) UNSIGNED NOT NULL, PRIMARY KEY (`id`) ) 阅读全文
posted @ 2022-06-17 09:01 DogLeftover 阅读(39) 评论(0) 推荐(0) 编辑
摘要:数据准备 # 创建数据库 CREATE DATABASE atguigudb2; USE atguigudb2; # 创建表 CREATE TABLE `class` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `className` VARCHAR(30) DE 阅读全文
posted @ 2022-06-16 16:24 DogLeftover 阅读(23) 评论(0) 推荐(0) 编辑
摘要:使用格式 EXPLAIN SELECT select_options 或者 DESCRIBE SELECT select_options EXPLAIN 语句输出的各个列的作用 代码案例 # 创建表 CREATE TABLE s1 ( id INT AUTO_INCREMENT, key1 VARC 阅读全文
posted @ 2022-06-15 21:59 DogLeftover 阅读(32) 评论(0) 推荐(0) 编辑
摘要:EXPLAIN四种输出格式 传统格式、JSON格式、TREE格式、可视化输出 输出传统格式 EXPLAIN SELECT s1.key1, s2.key1 FROM s1 LEFT JOIN s2 ON s1.key1 = s2.key1 WHERE s2.common_field IS NOT N 阅读全文
posted @ 2022-06-15 21:53 DogLeftover 阅读(39) 评论(0) 推荐(0) 编辑
摘要:查看系统性能参数 SHOW [GLOBAL|SESSION] STATUS LIKE '参数'; Connections:连接MySQL服务器的次数。 Uptime:MySQL服务器的上线时间。 Slow_queries:慢查询的次数。 Innodb_rows_read:Select查询返回的行数 阅读全文
posted @ 2022-06-15 11:07 DogLeftover 阅读(29) 评论(0) 推荐(0) 编辑
摘要:创建数据库、表 CREATE DATABASE atguigudb1; USE atguigudb1; # 1.创建学生表和课程表 CREATE TABLE `student_info` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `student_id` INT 阅读全文
posted @ 2022-06-14 15:55 DogLeftover 阅读(22) 评论(0) 推荐(0) 编辑
摘要:起步 步骤 页的概念 页的大小默认为16k 以页作为磁盘和内存之间交互的基本单位,也就是一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。也就是说,在数据库中,不论读一行,还是读多行, 都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(P 阅读全文
posted @ 2022-06-13 21:32 DogLeftover 阅读(81) 评论(0) 推荐(0) 编辑
摘要:起步 页的概念 页的大小默认为16k 以页作为磁盘和内存之间交互的基本单位,也就是一次最少从磁盘中读取16KB的内容到内存中,一次最少把内存中的16KB内容刷新到磁盘中。也就是说,在数据库中,不论读一行,还是读多行, 都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(Page 阅读全文
posted @ 2022-06-13 16:55 DogLeftover 阅读(79) 评论(0) 推荐(0) 编辑
摘要:大纲 指定行格式的语法 在创建或修改表的语句中指定行格式: CREATE TABLE 表名 (列的信息) ROW_FORMAT=行格式名称 ALTER TABLE 表名 ROW_FORMAT=行格式名称 举例: mysql> CREATE TABLE record_test_table ( -> c 阅读全文
posted @ 2022-06-13 15:37 DogLeftover 阅读(48) 评论(0) 推荐(0) 编辑
摘要:常见索引 聚簇索引 聚簇索引并不是一种单独的索引类型,而是一种数据存储方式(所有的用户记录都存储在了叶子节点),也就是所谓的索引即数据,数据即索引 其他特点 特点: 1. 使用记录主键值的大小进行记录和页的排序,这包括三个方面的含义: 页内的记录是按照主键的大小顺序排成一个单向链表 各个存放用户记录 阅读全文
posted @ 2022-06-13 14:54 DogLeftover 阅读(34) 评论(0) 推荐(0) 编辑
摘要:起步 B树索引适用存储引擎 即使多个存储引擎支持同一种类型的索引,但是他们的实现原理也是不同的。 Innodb和MyISAM默认的索引是Btree索引;而Memory默认的索引是Hash索引。 MyISAM引擎使用 B+Tree 作为索引结构,叶子节点的data域存放的是 数据记录的地址 MyISA 阅读全文
posted @ 2022-06-13 14:14 DogLeftover 阅读(418) 评论(0) 推荐(0) 编辑
摘要:简介 全表遍历 Hash结构 二叉搜索树 AVL树 B-Tree B+Tree R树 Hash结构 上图中哈希函数h有可能将两个不同的关键字映射到相同的位置,这叫做 碰撞 ,在数据库中一般采用 链接法 来解决。 在链接法中,将散列到同一槽位的元素放在一个链表中 Hash索引适用存储引擎 为了减少IO 阅读全文
posted @ 2022-06-13 14:14 DogLeftover 阅读(75) 评论(0) 推荐(0) 编辑
摘要:持降序索引 在MySQL5.7和MySQL8.0中创建表 CREATE TABLE ts1(a int,b int,index idx_a_b(a,b desc)); # 在MySQL5.7中查看表结构 show create table ts1\G # 索引仍然是默认的升序 # 在MySQL8.0 阅读全文
posted @ 2022-06-13 10:35 DogLeftover 阅读(70) 评论(0) 推荐(0) 编辑
摘要:索引的类型 从功能逻辑上说,索引主要有4种,分别是普通索引、唯一索引、主键索引、全文索引 按照物理实现方式,索引可以分为2种:聚簇索引和非聚簇索引 按照作用字段个数进行划分,分成单列索引和联合索引 1.1 普通索引 在创建普通索引时,不附加任何限制条件,只是用于提高查询效率。这类索引可以创建在任何数 阅读全文
posted @ 2022-06-11 08:49 DogLeftover 阅读(60) 评论(0) 推荐(0) 编辑
摘要:区 B+树的每一层中的页都会形成一个双向链表,如果是以页为单位来分配存储空间的话,双向链表相邻的两个页之间的物理位置可能离得非常远。 B+树索引的适用场景的时候特别提到范围查询只需要定位到最左边的记录和最右边的记录,然后沿着双向链表一直扫描就可以了,而如果链表中 相邻的两个页物理位置离得非常远,就是 阅读全文
posted @ 2022-06-10 15:05 DogLeftover 阅读(75) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示