语法
排除记录时用 where,join on 是进行笛卡尔连接的。
当想要获得某个列(如工资)的排序,可以考虑表自连接。
(select s1.salary from salaries s1, salaries s2 where s1.salary <= s2.salary group by s1.salary having count(distinct(s2.salary)) = 2)
MyISAM 和 InnoDB 的区别
- 行级锁:MyISAM 只有表级锁,InnoDB 支持行级锁和表级锁
- B+树:二者都是把B+树作为索引结构,但 MyISAM 的索引都是非聚簇索引(叶子节点的data部分放数据记录的地址),InnoDB 的主键索引使用的是聚簇索引(叶子节点部分就是数据),二级索引使用的是非聚簇索引。
- 事务:MyISAM不支持事务。
- 外键:MyISAM不支持外键。
B树和B+树区别
B+树非叶子节点不放数据只放索引,B树非叶子节点放数据也放索引
范围查询时,B+树的叶子节点之间形成了双向链表,B树则需要进行中序遍历找到查询的下限。
查询时,B树对范围内的节点作二分查找,找到就结束了;B+树则肯定会查询到底,效率比较稳定。
索引
索引失效的情况
- like 左模糊或全模糊查询
- 最左匹配失效
- where 错误使用 or 关键字
- 索引隐式类型转换
- 对索引使用函数
事务
MVCC
readview
是事务 在开始执行时创建的一个快照,它包含了事务 B 开始时已经提交的事务的 ID。
可重复读如何实现
启动事务时创建一个 Read View,整个事务期间用这个 Read View。
日志
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1216271933@qq.com