青云博客 记录、分享

什么是覆盖索引?

覆盖索引是指一个索引包含了查询所需的所有列,而无需访问表的实际数据页。 当数据库系统执行查询时,通常需要从磁盘中读取数据页到内存中才能进行处理。而如果使用了覆盖索引,由于索引已经包含了查询所需的所有列的值,数据库系统可以直接通过索引来获取这些值,而不需要额外地读取数据页。这样可以减少磁盘 I/O 的

詹学伟 Published on 2024-04-22

什么是索引下推?

索引下推(Index Condition Pushdown,简称ICP)是一种数据库查询优化技术,它利用了数据库引擎中的索引和过滤条件,将部分过滤工作下推到存储引擎层面进行处理,从而减少不必要的数据读取和传输。 在传统的查询执行过程中,数据库引擎首先根据索引定位到符

詹学伟 Published on 2024-04-22

什么是最左前缀原则?

最左前缀原则(Leftmost Prefix Rule)是索引在数据库查询中的一种使用规则。它指的是在使用复合索引时,索引的最左边的连续几个列会被用于查询过滤条件的匹配。 具体来说,如果在表中创建了一个复合索引,包含多个列 A、B、C,那么最左前缀原则要求查询中的过滤条件必须从索引的最左边开始,并且

詹学伟 Published on 2024-04-22

mysql 中in 和exists 的区别

当谈到 MySQL 中的 IN 和 EXISTS 时,它们都是用于查询和筛选数据的条件语句,但有一些重要的区别: IN关键字:使用 IN 条件时,我们提供一个固定的值列表,然后将其与指定列的值进行比较。如果列中的值与列表中的任何一个值匹配,就会返回结果。IN 条件适合用于确定某个字段的值是否在给定的

詹学伟 Published on 2024-04-22

MySQL多表查询时有哪些连接方式

当进行多表查询时,在 MySQL 中常用的连接方式有以下几种: 内连接(INNER JOIN):返回同时满足连接条件的行。它通过比较连接列的值,将两个或多个表中匹配的行组合在一起。 左外连接(LEFT JOIN):返回左表中的所有行,以及与左表匹配的右表的行。如果右表中没有匹配的行,对应的列将填充为

詹学伟 Published on 2024-04-22

B 树和B+树的区别?(深入)

MySQL的索引机制中,有一点可谓是路人皆知,既默认使用B+树作为底层的数据结构。有人会说树结构是以二分法查找数据,所以会在很大程度上提升检索性能,这点确实没错,但树结构有那么多,但为什么要选择B+树呢?而不选择二叉树、红黑树或B树呢?下面一起聊一聊这个话题。 索引为何不选择二叉树? 二叉搜索树是遵

詹学伟 Published on 2024-04-22

B 树和B+树的区别?

B树和B+树是常用的数据结构,用于在数据库中进行索引操作。它们之间的区别主要有以下几个方面: 数据存储方式:在B树中,每个节点都包含键和对应的值,叶子节点存储了实际的数据记录;而B+树中,只有叶子节点存储了实际的数据记录,非叶子节点只包含键信息和子节点的指针。 数据检索方式:在B树中,由于非叶子节点

詹学伟 Published on 2024-04-22

mysql中有哪几种锁?(深入)

1.MySQL中的锁分类 按粒度分表锁、行锁和页锁三种, 按类型分读锁和写锁(都属于悲观锁)两种。 按性能分乐观锁、悲观锁和意向锁。 其中,MyISAM和MEMORY存储引擎采用的是表级锁,而InnoDB存储引擎支持行级锁和表级锁。

詹学伟 Published on 2024-04-22

什么时候不要使用索引?

在大多数情况下,使用索引可以提高数据库查询的性能和效率。但也有一些情况下,不使用索引可能更合适: 小型表:对于非常小的表,可能不需要使用索引。因为索引的维护需要额外的存储空间和计算资源,而对于小型表来说,全表扫描的开销可能相对较小。 插入、更新和删除频繁的表:如果表的插入、更新和删除操作非常频繁,而

詹学伟 Published on 2024-04-22

MySQL 中有哪几种锁?

在MySQL中,常见的锁包括以下几种: 表级锁(Table-level Locking):在事务操作中对整个表进行加锁。当一个事务对表进行写入操作时,其他事务无法对该表进行任何读写操作。表级锁通常是针对特定的DDL操作或备份操作。 共享锁(Shared Lock):也称为读锁(Read Lock),

詹学伟 Published on 2024-04-22
Previous Next