- MySQL索引使用的数据结构主要有BTree索引 和 哈希索引 。
- 对于哈希索引来说,底层的数据结构就是哈希表,
- 因此在绝大多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;
- 其余大部分场景,建议选择BTree索引。
- MySQL的BTree索引使用的是B树中的B+Tree,但对于主要的两种存储引擎的实现方式是不同的。
- **MyISAM:**先找key,再找data,data放的是地址
- B+Tree叶节点的data域存放的是数据记录的地址。在索引检索的时候,首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其 data 域的值,然后以 data 域的值为地址读取相应的数据记录。这被称为“非聚簇索引”。
- **InnoDB:**自己就是索引,data放的是地址记录的主键的值
- 其数据文件本身就是索引文件。相比MyISAM,索引文件和数据文件是分离的,其表数据文件本身就是按B+Tree组织的一个索引结构,树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。这被称为“聚簇索引(或聚集索引)”。而其余的索引都作为辅助索引,辅助索引的data域存储相应记录主键的值而不是地址,这也是和MyISAM不同的地方。
- 在根据主索引搜索时,直接找到key所在的节点即可取出数据;
- 在根据辅助索引查找时,则需要先取出主键的值,再走一遍主索引。
- 因此,在设计表的时候,不建议使用过长的字段作为主键,也不建议使用非单调的字段作为主键,这样会造成主索引频繁分裂。 PS:整理自《Java工程师修炼之道》
- **MyISAM:**先找key,再找data,data放的是地址
2020.10 • 学习优秀奖学金(院系级)
2020.10 • 社会工作优秀奖学金(校级)(社会实践活动班级排名院系第一)
2021.10 • 国家励志奖学金(国家级)
2022.10 • 英语奖学金(校级)
2019-2022学年 • 人民奖学金*3(校级)(成绩前12%)
•
•• 计算机基础:掌握常用数据结构和算法,了解计算机网络和操作系统相关知识
Java:熟悉 Java语法知识、集合等基础框架,了解多线程与JVM相关知识熟悉 MySQL、Oracle 数据库,熟练书写基于标准的 SQL 语句;
了解 Java 设计模式:单例模式、工厂模式等;
•• 熟练掌握基于 Servlet、JSP、HTML 的 Web 编程;
熟悉 Ajax、JavaScript、XML 等技术;
•
• 了解 Spring 等应用开发框架及 MVC 模式;
能够独立思考和解决常见问题,有查阅资料解决技术问题的能力。
2021.07 – 2021.11 宁熙实验室 软件开发工程师
• 主要负责多个信息管理系统的权限管理模块的构建与完善,具有用户、角色、菜单管理,并通过网关进行统一的权限认证。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。