索引

首页 标签 索引
# 索引 #
关注
66564内容
二叉树基础及常见类型
二叉树是最核心的数据结构之一,不仅是红黑树、堆、字典树等复杂结构的基础,更体现了递归思维的本质。掌握二叉树,等于掌握算法解题的钥匙。从满二叉树到完全二叉树,再到二叉搜索树,各类变体应用广泛。其链式存储与哈希表表示法在算法题中灵活实用,是刷题进阶的必经之路。
什么是回表查询
MySQL中InnoDB引擎的聚簇索引将数据与索引存储在一起,叶子节点存整行数据,每表仅一个;二级索引则分离存储,叶子节点存主键值。回表查询需先查二级索引再查聚簇索引,性能较低。优化方式包括:优先主键查询、使用联合索引实现覆盖索引、利用MySQL 5.6+的索引下推功能,在存储引擎层提前过滤,减少回表次数,提升查询效率。(238字)
索引失效的场景
本文结合项目经验,总结了索引失效的常见场景:违反最左前缀法则、范围查询右侧列失效、索引列进行函数运算、隐式类型转换、未加引号的字符串匹配及%开头的like查询。同时建议使用explain分析执行计划,关注key、type和extra字段,优化SQL性能。
HashMap 原理(方法执行流程)
以put方法为例,介绍HashMap的工作原理:先通过key的hashCode计算哈希值,并进行二次哈希提升分布均匀性;若数组未初始化则创建默认容量为16的数组;利用(n-1)&hash计算桶下标,确保高效定位;根据桶位状态分别处理:空位直接插入、链表遍历更新或尾插并判断树化、红黑树则按树逻辑新增;最后检查是否需扩容。
知道什么是聚簇索引,什么是二级索引吗
聚簇索引将数据与索引存储在一起,B+树叶子节点包含整行数据,每张表仅有一个,通常为主键索引。若无主键,MySQL会选首个非空唯一索引或自动生成rowID作为聚簇索引。二级索引则分离存储,叶子节点保存主键值,可有多个。
为什么MySQL索引结构是B+tree
MySQL采用B+树作为索引结构,因其非叶子节点仅存键和指针,使每页可存储更多键,树层级更浅,查询更快。所有数据集中于叶子节点,查询效率稳定,且叶子节点形成双向链表,支持高效范围查询。
索引创建的原则
创建索引需遵循六大原则:针对数据量大、查询频繁的表;在常用作查询、排序、分组的字段上建索引;优先选择区分度高或唯一的字段;varchar字段建议使用前缀索引;尽量创建联合索引,高区分度字段前置;避免过多索引,以降低维护成本,提升查询效率。
HashMap 原理(数据结构)
HashMap底层由数组、链表和红黑树构成。数组通过hashCode定位元素,实现O(1)存取;但容量有限,易发生冲突。冲突时用链表串联,但链表过长会降性能。因此当链表长度≥8且数组容量≥64时,转为红黑树,将查找复杂度从O(n)降为O(log n),提升效率;节点减少时则退回链表。
3.1索引创建的原则 ?
创建索引需遵循六大原则:针对大数据量、高频查询表;在查询、排序、分组字段建索引;优先高区分度列,可建唯一索引;varchar字段建议用前缀索引;多用联合索引且高区分度字段前置;避免过多索引影响维护效率。
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,助力用户全面掌握SQL使用情况,实现精细化管理与性能优化,提升日志分析效率与体验。
免费试用