- 博客(6)
- 收藏
- 关注
原创 order by排序时字段顺序和联合索引顺序不一致时为什么仍能使用到索引
总结起来,索引的有序性可以提供部分排序优化,但并不一定能够涵盖所有的排序需求。对于不符合索引顺序的排序操作,MySQL还是需要在排序缓冲区进行最终的排序操作,以满足完整的排序要求。根据最左前缀法则,我们不难发现此时对于phone的排序是用到联合索引的。排序时,MySQL可以直接使用索引的顺序,而不需要访问表的实际数据。这是因为索引的顺序本身并不会限制查询的方式。吗,为什么排序phone的时候能用到索引的顺序,此时索引里面的顺序不是和需要。的时候,索引便存储了两种排序的数据,一种是。单列索引一样的顺序。
2023-11-30 22:29:45 432
原创 SQL优化
比如查询age字段在不建立索引的时候进行order by排序是Using filesort,而建立索引之后是Using index,因为age字段变得有序(这里需要明确索引是什么,索引是帮助数据库高效获取数据的数据结构)(个人的理解:比如对age字段的排序,age本身已经建立有单列索引,那么age本身就是顺序的排列,他会通过索引直接返回有序数据,因此不需要在缓冲区进行排序操作)(二级索引的叶子节点存着主键,降低主键的长度,可以降低二级索引占用的磁盘空间,降低搜索时候的磁盘IO)
2023-11-29 23:11:41 416
原创 对于MySQL中explain执行计划type连接类型的理解
这种执行计划通常出现在没有使用覆盖索引的查询中,或者在某些情况下,当MySQL认为使用索引比直接扫描表更快时。这种执行计划通常出现在没有使用任何索引的查询中。explain:通常表示查询中引用的某个表或列不存在,或者查询不涉及到表,或者查询语句本身有错误,导致MySQL无法生成执行计划。这种类型的执行计划通常出现在使用了索引的等值查询中,且该值在索引中是唯一的。这种情况通常出现在非常特殊的查询中,如只涉及系统表的查询。这种执行计划通常出现在使用了主键或唯一索引的等值查询中,且被引用的列在索引中是唯一的。
2023-11-28 18:38:29 449
原创 数据库事务并发问题的理解
事务a,此时隔离级别为读未提交(存在脏读,不可重复读,幻读),事务b,对数据进行修改,注意此时事务b没有提交事务,但是事务a已经可以读取到事务b修改后的数据,即脏读。再将事务a隔离级别调整为读已提交(存在不可重复读,幻读),事务a读取数据,事务b,对数据进行修改,b提交事务,事务a再次读取数据,发现两次数据不一致,即不可重复读。再将事务隔离级别设置为可重复读(存在脏读),事务a读取数据,发现想要添加的数据不存在,事务b,对增加该数据,事务a添加该数据,又发现该数据已经存在,即幻读。
2023-11-27 15:50:30 339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人