- 博客(14)
- 收藏
- 关注
原创 索引设计的原则
联合索引本质上来说也是一个B+树,但是不同的是,单列索引的B+树的键值数量是1(即一个键值+一个页指针),但是联合索引的键值数量是大于等于2,如下图三行绿色是联合索引,粉色是记录的主键。,索引用b+树存放本身就会占据空间,而增删改的执行重建索引要消耗大量的时间成本。这个查询中只有a列和b列使用到了索引,而c列没有使用索引,因为根据最左匹配查询原则,遇到范围查询会停止。这里查stuno 可以走单列索引也可以走联合索引,但实际走了联合索引,验证了联合索引优于单列索引的原则。在多个字段都要创建索引的情况下,
2023-12-26 01:31:53
1044
1
原创 MySQL索引的使用
从MySQL 8.x开始支持 隐藏索引(invisible indexes) ,只需要将待删除的索引设置为隐藏索引,使 查询优化器不再使用这个索引(即使使用force index(强制使用索引),优化器也不会使用该索引), 确认将索引设置为隐藏索引后系统不受任何响应,就可以彻底删除索引。index_name 指定索引的名称,为可选参数,如果不指定,那么MySQL默认col_name为索引名;length 为可选参数,表示索引的长度,只有字符串类型的字段才能指定索引长度;,这样做的效率其实很低。
2023-12-23 18:56:10
371
1
原创 MySQL索引初步了解
*辅助索引(普通索引/二级索引)**就是除了聚集索引之外的其他索引,不具有数据存储的功能,索引 B+ 树叶子节点存储的 data 也只是主键的值而已。可以看出B树的非叶子节点也存储了DATA,这就带来一个关键的缺陷,节点的大小是按页区指定的,非叶子节点的DATA会和POINT竞争存储空间,大概率是POINT竞争不过,导致B树的层数增加,因而降低索引的效率。而非唯一索引就是没有这种约束的索引。的角度来说,MySQL 索引分为主键索引与非主键索引、单列索引与多列索、唯一索引与非唯一索引、前缀索引与后缀索引。
2023-12-23 02:35:45
355
1
原创 MySQL常见存储引擎
MyISAM提供了大量的特性,包括**全文索引、压缩、空间函数(GIS)**等,但MyISAM 不支持事务、行级 锁、外键 ,有一个毫无疑问的缺陷就是崩溃后无法安全恢复。数据文件结构:表名.frm 存储表结构 、表名.MYD 存储数据 (MYData)、 表名.MYI 存储索引 (MYIndex)5.5之前默认的存储引擎 优势是访问的 速度快 ,对事务完整性没有要求或者以SELECT、INSERT为主的应用。针对数据统计有额外的常数存储。Memory 引擎:置于内存的表。
2023-12-20 21:57:32
339
原创 MySQL逻辑架构
MySQL内部维持着一些Cache和Buffer,比如Query Cache用来缓存一条SELECT语句的执行结果,如果能够在其中找到对应的查询结果,那么就不必再进行查询解析、优化和执行的整个过程了,直接将结果反馈给客户端。进行查询(全表检索还是使用索引检索),表之间的连接顺序如何,最后会按照执行计划中的步骤调用存储引擎提供的方法来真正的执行查询,并将查询结果返回给用户。在MySQL的查询缓存中,锁的粒度问题主要体现在查询缓存的实现方式上。比如表缓存,记录缓存,key缓存,权限缓存等。
2023-12-19 23:48:21
1098
1
原创 如何在url请求路径设置空值
总所周知,url请求路径可以设置parameter,实际上通过request.getParameter(...)获取到的是字符串,在使用的过程中有可能需要设置空值的参数。
2022-12-14 21:58:04
671
转载 java反射调用变长参数构造器来创建实例
在getDeclaredConstructor中定义构造方法的参数类型使用的是数组类型或变长类型,在newInstance进行实例创建时传递给构造方法的参数列表是一个数组,该数组需要被Object数据包裹,直接传会报错。报错如下改用Object包裹后传入.........
2022-06-18 19:47:19
152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人