Mysql
文章平均质量分 78
Mysql
Java学习者柯十一
博客主要记录平时学习的一些新技术和BUG以及算法研究,热衷分享喜欢原创~关注我会给你带来一些不一样的认知和成长。
展开
-
【mysql学习篇】Order by与Group by优化以及排序算法详解
其实对比两个排序模式,单路排序会把所有需要查询的字段都放到 sort buffer 中,而双路排序只会把主键和需要排序的字段放到 sort buffer 中进行排序,然后再通过主键回到原表查询需要的字段。如果 MySQL 排序内存 sort_buffer 配置的比较小并且没有条件继续增加了,可以适当把 max_length_for_sort_data 配置小点,让优化器选择使用双路排序算法,可以在sort_buffer 中一次排序更多的行,只是需要再根据主键回到原表取数据。原创 2023-07-26 23:27:25 · 9629 阅读 · 0 评论 -
【mysql学习篇】连接查询详解以及性能优化
假设有两个表,一个是订单表 orders,包含订单编号 order_id、商品编号 goods_id 和用户编号 user_id;另一个是商品表 goods,包含商品编号 goods_id、商品名称 goods_name 和商品单价 price。原创 2023-04-04 17:13:49 · 7757 阅读 · 1 评论 -
【mysql学习篇】count()优化分析
而是专门做了优化,不取值,按行累加,效率很高,所以不需要用count(列名)或count(常量)来替代 count(*)。还可以走主键索引,所以count(主键 id)>count(字段)以上4条sql只有根据某个字段count时不会去统计字段为。四个sql的执行计划一样,说明这四个sql执行效率应该差不多。count(*) 是例外,mysql 并不会把全部字段取出来。,所以理论上count(1)比count(字段)会快一点。count(1)跟count(字段)执行过程类似,,就用常量1做统计,原创 2023-02-28 15:10:54 · 21693 阅读 · 0 评论 -
【mysql学习篇】分页查询&连接查询索引优化剖析
并且 join_buffer 里的数据是无序的,因此对表 t1 中的每一行,都要做 100 次判断,所以内存中的判断次数是 100 * 10000= 100 万次。整个过程会读取 t2 表的所有数据(扫描100行),然后遍历这每行数据中字段 a 的值,根据 t2 表中 a 的值索引扫描 t1 表 中的对应行(扫描100次 t1 表的索引,1次扫描可以认为最终只扫描 t1 表一行完整数据,也就是总共 t1 表也扫描了100 行)。显然改写后的 SQL 走了索引,而且扫描的行数大大减少,执行效率更高。原创 2023-02-16 11:51:57 · 27285 阅读 · 0 评论 -
【mysql学习篇】索引优化详解(排序算法&trace工具)
MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index效率高,filesort效率低。order by满足两种情况会使用Using index。order by语句使用索引最左前列。使用where子句与order by子句条件列组合满足索引最左前列。尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。如果order by的条件不在索引列上,就会产生Using filesort。原创 2023-02-14 02:20:19 · 28217 阅读 · 0 评论 -
【mysql学习篇】mysql的explain执行计划详解
索引优化explain详解&实战原创 2023-02-13 12:41:12 · 27229 阅读 · 0 评论 -
【mysql学习篇】InnoDB存储引擎事务的实现和BufferPool缓存机制详解
也就是说,一个没有提交事务的redo log记录,也可能会刷盘,因为在事务执行过程数据记录是会写入redo log buffer中,而这些记录会被后台线程刷盘(写到磁盘里的redo log文件)假如一个事务将age=1修改成了age=2,在事务还没有提交的时候,后台线程已经将age=2从 redo log buffer 刷入了磁盘,这个时候会把之前存入undo log的回滚记录。mysql重启时,会把redo log日志文记录的修改内容,恢复Buffer Pool数据,实现磁盘idb文件的最终一致性。原创 2023-02-12 23:58:10 · 27752 阅读 · 0 评论 -
【mysql学习篇】undo日志版本链与read view机制详解
MVCC机制详解&undo日志版本链与read view机制详解。原创 2023-02-12 19:19:17 · 27940 阅读 · 0 评论 -
【mysql学习篇】为什么mysql用B+Tree?
各种数据结构对比,二叉树、红黑树、B Tree、B + Tree原创 2023-02-11 00:23:48 · 28172 阅读 · 0 评论 -
mysql中字符串与日期类型如何比较
Mysql在比较两种不同数据类型时,第一步是将他们转化为同一种类型,然后在比较。原创 2023-01-18 16:50:25 · 4739 阅读 · 0 评论