![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 82
loopnz_
这个作者很懒,什么都没留下…
展开
-
insert on duplicate key update多个唯一索引踩坑
可以看出,id=1和id=2两行都匹配到了,但是只更新了一行数据,受影响的行数为2。(按索引被添加到表上的顺序排序)。on duplicate key update 这个语义的逻辑是,插入一行数据,如果碰到唯一键约束,就执行后面的更新语句。这里需要注意的是:如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。举例:表test_tbl有如下数据,但是有两个唯一索引:UNIQUE KEY a (如果该表中,由多个唯一索引,需要特别注意,出现重复时则该语句只能更新其中一行记录。原创 2023-08-15 00:02:53 · 1460 阅读 · 0 评论 -
MySQL的日志系统
MySQL体系结构与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是我们今天要讨论的 主角:redo log(重做日志)和 binlog(归档日志)。如果接触 MySQL,那这两个词肯 定是绕不过的,我后面的内容里也会不断地和你强调。不过话说回来,redo log 和 binlog 在设计上有很多有意思的地方,这些设计思路也可以用到你自己的程序里。原创 2023-08-13 16:53:09 · 112 阅读 · 0 评论 -
MySQL join是怎么工作的
首先准备t1 t2表可以看到,这两个表都有一个主键索引 id 和一个索引 a,字段 b 上无索引。存储过程 idata() 往表 t2 里插入了 1000 行数据,在表 t1 里插入的是 100 行数据。原创 2023-08-13 16:46:44 · 40 阅读 · 0 评论 -
MySQL order by是怎么工作的
Extra 这个字段中的“Using filesort”表示的就是需要排序,MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。满足 city='杭州’条件的行,是从 ID_X 到 ID_(X+N) 的这些记录。我们暂且把这个排序过程,称为全字段排序,执行流程的示意图如下所示,下一篇文章中我们还会用到这个排序。“按 name 排序”这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数 sort_buffer_size。原创 2023-08-13 16:44:14 · 38 阅读 · 0 评论