MySQL45讲(一)(44)

该文章提到的是问题

有一个知识点就是不一定left join的左边就一定是驱动表,就比如左边如果查询的列是有索引的,那么在使用索引的情况下,右边的表应该是驱动表

对于SNL和BNL的区别在于,对于被驱动表的匹配条件一个是每一行会先在buffer pool中进行查找,没有就去磁盘中取,另一个就是先全部取到内存中

在从磁盘中读取文件到内存中的这个操作中,对于被驱动表的数据进行多次访问,然后就会导致,这样超过一秒的话,数据就更容易放到buffer pool的头部,即使被驱动表的数据都在内存,每次的访问也是类似于指针操作,比不上join_buffer中的数组更快

distinct和 group by的操作性能一致

执行的语句就是开一个临时表,对于全表进行遍历,给查询字段加上唯一索引,然后遍历表,对于数据取出之后插入到临时表中,,如果临时表出现唯一键冲突就跳过,否则就插入成功,遍历完成之后就返回给客户端

对于备库自增主键的问题,对于insert_id=某个值的时候,如果A早于B但是提交的时候B早于A的话,binlog就会更早,然后再主从的时候,如果你是处于binlog_format=statement的时候,应为只记录一条语句,就会导致语句A的id和语句B的id插入的顺序反过来了,导致数据出现问题,但是如果你使用的binlog_format=row格式的话,再每条语句执行前,会加入一个set statement=id的格式来明确表示,接下来的语句的自增id填哪一个,所以就可以保证不会出错

对于left join ... where ...这句话的话,会转换成join ... where ...

还有一个小知识点就是,dinstinct的去重,每次都是拿到主键第一的位置的行数据,也就说,a=1有3行,就拿出主键id最小的放到临时表中

相关推荐

  1. MySQL45()(44

    2024-05-09 23:24:07       11 阅读
  2. MySQL45()(42)

    2024-05-09 23:24:07       12 阅读
  3. MySQL45()(43)

    2024-05-09 23:24:07       9 阅读
  4. MySQL实战45

    2024-05-09 23:24:07       21 阅读
  5. MySQL45 -- MYSQL中的锁

    2024-05-09 23:24:07       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-09 23:24:07       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-09 23:24:07       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-09 23:24:07       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-09 23:24:07       20 阅读

热门阅读

  1. 添加新的远程仓库地址

    2024-05-09 23:24:07       11 阅读
  2. C语言练习百题之计算字符串中子串出现的次数

    2024-05-09 23:24:07       12 阅读
  3. Pytorch基础:torch.expand() 和 torch.repeat()

    2024-05-09 23:24:07       12 阅读
  4. C数据结构:链表高级篇 约瑟夫环(杀人游戏)

    2024-05-09 23:24:07       11 阅读
  5. 第21天 反射

    2024-05-09 23:24:07       10 阅读
  6. 学习笔记:IEEE 1003.13-2003【POSIX PSE51接口列表】

    2024-05-09 23:24:07       13 阅读
  7. 数据结构(三)算法

    2024-05-09 23:24:07       11 阅读
  8. 为什么 IP 地址通常以 192.168 开头?

    2024-05-09 23:24:07       13 阅读