JDK与MySql索引

本文深入解析了JDK的基础概念,包括JDK、JRE的区别,浮点数的精度问题,以及字符编码的使用。同时,详细阐述了MySQL索引的原理,包括B-Tree、B+Tree和Hash索引的特点,以及联合索引的优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题目

1:JDK讲解

JDK:java development kit

JRE: java RunTime Environment

在这里插入图片描述

二进制八进制十六进制
0b00x
0b10101010012370x137ADF
float f = 0.1f;
double d = 0.1/10;
System.out.println(f==d);
输出:false

结论:float 有限、离散、舍入误差、大约、接近不等于

银行小数:Meth中的BigDecimal方法


float f = 0.1f;
double d = 1.0/10;
System.out.println(d==f);// 输出false

char c = '\u0061';// unicode编码
System.out.println(c);// 输出a
System.out.println((char) 65);// ASCII码 输出A

2、MySql索引讲解

索引是帮助MySql高效获取数据的 “排好序” 的数据结构

数据结构有:二叉树、红黑树、B-Tree、B+Tree,根据键值对去找值

select * from user where id = 7;

通过遍历数据库的表,找到该条数据的地址位置,慢查询(数据亿万时)?

如何解决

添加索引

二叉树:开始于根节点,左小右大

缺点:当数据库是递增的时候,就等于链表查询

改进二叉树

红黑树(平衡二叉树):右边节点不能大于左边2个阶层

缺点:数据量大时,树的高度太高

更进一步的升级二叉树

B-Tree

给根节点分配更多的地址空间,多个根节点(16k)

B+Tree(冗余索引)增加效率 >=左边 <右边

非叶子节点不存储data,只有最下层的叶子节点才有data(特点:更多的根节点)

一个索引 8+6=14b

16kb/14b = 1170个索引元素

3层= 1170x1170x16—>两千万条

最下层得到地址指针

Hash索引

最快的方法,通过一次hash运算的值变成指针,再将值存到另外一个表中

缺陷:不能进行范围查找!!!

hash运用:MD5、CRC16加密运算

索引存放的位置

存储引擎形容的是表,而不是Mysql

  • (B-Tree) mysiam引擎—>.frm后缀的是表结构 .MYD是表数据 .MYI是表索引

    在这里插入图片描述

  • (B+Tree)innodb引擎—>.frm后缀的是表结构 .idb的是表数据和索引

在这里插入图片描述

3、联合索引

MySql索引优化最佳方案???

联合索引底层结构长什么样?

例如:最左前缀原则

在这里插入图片描述

3、联合索引

MySql索引优化最佳方案???

联合索引底层结构长什么样?

例如:最左前缀原则

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值