摘要:
TCP连接的断开过程-被概括为四次挥手。 双方一开始都是Established状态 第一次挥手:(客户端进入Fin_wait_1状态) 客户端向服务器发送一个FIN 结束报文,(表示客户端没有数据要发送了,但仍然可以接收数据,) FIN=1 序列号seq = u 第二次挥手:(服务端发完进入clos 阅读全文
posted @ 2025-05-27 19:41
kuki'
阅读(32)
评论(0)
推荐(0)
摘要:
索引下推指,MySQL把where条件尽可能下推到索引扫描阶段,在存储引擎层提前过滤掉不符合条件的记录。 当查询条件包含索引列但未完成匹配时,ICP会在存储引擎层过滤非索引列条件,以减少回表次数。 在有索引下推时: 数据库 在索引本身 就判断一部分 WHERE 条件; 只有满足条件的行才“回表”,大 阅读全文
posted @ 2025-05-27 17:44
kuki'
阅读(23)
评论(0)
推荐(0)
摘要:
最左前缀原则指的是:MySQL使用联合索引时,必须从最左边的字段开始匹配,才能命中索引。 范围查询后的列还能用索引吗? 范围查询只能应用于最左前缀的最后一列。范围查询之后的列无法使用索引。 select * from table where a = 1 and b > 2 and c = 3; -- 阅读全文
posted @ 2025-05-27 17:30
kuki'
阅读(54)
评论(0)
推荐(0)
摘要:
覆盖索引指的是:查询所需的字段全部在索引中,不需要回表,从索引页就能直接返回结果。 可以将高频查询的字段(如where条件和select列)组合为联合索引,实现覆盖索引。 阅读全文
posted @ 2025-05-27 17:09
kuki'
阅读(8)
评论(0)
推荐(0)
摘要:
联合索引就是把多个字段放在一个索引里,遵守“最左前缀”原则,只有从第一个字段开始连接使用,索引才会生效。 联合索引按字段顺序构建B+树。例如(age,name) 索引会优先按照age排序,age相同则按照name排序,若两者都相同则按主键排序,确保叶子节点无重复索引项。 创建(A,B,C) 联合索引 阅读全文
posted @ 2025-05-27 16:56
kuki'
阅读(34)
评论(0)
推荐(0)
摘要:
当使用非聚簇索引进行查询时,MySQL需要先通过非聚簇索引找到主键值, 然后再根据主键值回到聚簇索引中查找完整数据行,这个过程称为回表。 回表的代价是什么? 回表通常需要访问额外的数据页,如果数据不在内存中,还需要从磁盘读取,增加I/O开销。 可通过覆盖索引或联合索引来避免回表。 什么情况下会触发回 阅读全文
posted @ 2025-05-27 16:28
kuki'
阅读(27)
评论(0)
推荐(0)
摘要:
聚簇索引 聚簇索引的叶子节点存储了完整的数据行,数据和索引是在一起的。 InnoDB的主键索引就是聚簇索引,叶子节点不仅存储了主键值,还存储了其他列的值。因此按照主键进行查询的速度会非常快。 每个表只能有一个聚簇索引,通常由主键定义。如果没有显式指定主键,InnoDB会隐式创建一个隐藏的主键索引ro 阅读全文
posted @ 2025-05-27 16:00
kuki'
阅读(25)
评论(0)
推荐(0)
摘要:
B+树索引支持范围查询、有序扫描,是InnoDB的默认索引结构。 Hash索引只支持等值查找,速度快但功能弱,常见于Memory引擎。 阅读全文
posted @ 2025-05-27 15:21
kuki'
阅读(15)
评论(0)
推荐(0)
摘要:
B+树相比B树有3个显著优势: B树的每个节点既存储键值,又存储数据和指针,导致单节点存储的键值数量较少。 B树的范围查询需要通过中序遍历逐层回溯; 而B+树的叶子节点通过双向链表顺序连接,范围查询只需要定位起始点后顺序遍历链表即可,没有回溯开销。 B树的数据可能存储在任意节点 假如目标数据恰好位于 阅读全文
posted @ 2025-05-27 15:15
kuki'
阅读(17)
评论(0)
推荐(0)
摘要:
一棵B+树能存多少数据,取决于分支因子和高度。 在InnoDB中,页的默认大小为16KB,当主键为bigInt时,3层B+树通常可以存储约2000万条数据。 阅读全文
posted @ 2025-05-27 14:56
kuki'
阅读(15)
评论(0)
推荐(0)
摘要:
因为B+树是一种高度平衡的多路查找树,能有效降低磁盘的IO次数,并且支持有序遍历和范围查询。 查询性能非常高,其结构也适合MySQL按照页为单位在磁盘上查询。 像其他选项,比如说哈希表不支持范围查询,二叉树层级太深,B树不方便范围扫描,最终选择了B+树。 再换一种回答: 相比哈希表:B+树支持范围查 阅读全文
posted @ 2025-05-27 14:49
kuki'
阅读(13)
评论(0)
推荐(0)
摘要:
简版:比如索引列使用了函数,使用了通配符开头的模糊查询,联合索引不满足最左前缀原则,或者使用or的时候部分字段无索引 对索引列使用函数或表达式 like模糊查询以通配符开头会导致索引失效 联合索引违反了最左前缀原则,索引会失效 阅读全文
posted @ 2025-05-27 14:30
kuki'
阅读(18)
评论(0)
推荐(0)
摘要:
选择合适的字段 频繁出现在where,join,order by, group by中的字段。 优先选择区分度高的字段,比如用户id,手机号等唯一值多的,而不是性别、状态等区分度极低的字段(实在需要, 考虑联合索引) 控制索引的数量,避免过度索引 每个索引都要占用存储空间,单表的索引数量不建议超过5 阅读全文
posted @ 2025-05-27 13:16
kuki'
阅读(42)
评论(0)
推荐(0)
摘要:
全文索引是MySQL一种优化文本数据检索的特殊类型索引,适用于char,varchar和text等字段。 建表时通过 fulltext(title,body)来定义。通过 MATCH(col1, col2) AGAINST('keyword') 进行检索 默认按照降序返回结果,支持布尔模式查询。 底 阅读全文
posted @ 2025-05-27 12:55
kuki'
阅读(23)
评论(0)
推荐(0)
摘要:
普通索引仅用于加速查询,不限制字段值的唯一性。适用于高频写入的字段,范围查询的字段。 唯一索引强制字段值的唯一性, 插入或更新时会触发唯一性检查; 适用于业务唯一性约束的字段、防止数据重复插入的字段 阅读全文
posted @ 2025-05-27 12:45
kuki'
阅读(10)
评论(0)
推荐(0)
摘要:
主键索引=唯一索引+非空。 每个表只能有一个主键索引,但可以有多个唯一索引。 主键索引不允许插入Null值,尝试插入NULL会报错, 唯一索引允许插入多个NULL值。 阅读全文
posted @ 2025-05-27 12:00
kuki'
阅读(11)
评论(0)
推荐(0)
摘要:
主键索引用于唯一标识表中的每条记录,其列值必须唯一且非空。 创建主键时,MySQL会自动生成对应的唯一索引。 每个表只能有一个主键索引,一般是表中的自增id字段。 阅读全文
posted @ 2025-05-27 11:58
kuki'
阅读(13)
评论(0)
推荐(0)

浙公网安备 33010602011771号