mysql查询的几种方式
1.const:用主键或唯一二级索引进行等值查询时
2.ref:用普通二级索引进行等值查询时
3.range:利用索引进行范围匹配
4.index:遍历⼆级索引记录的执⾏⽅式称
5.all:全表扫描
2.mysql的连接
1.内连接:驱动表中的记录在被驱动表中找不到匹 配的记录,该记录不会加⼊到最后的结果集,我们上边提到的 连接都是所谓的内连接
2.外连接:对于外连接的两个表,驱动表中的记录即使在被驱动表中没有 匹配的记录,也仍然需要加⼊到结果集。
1.左外连接:选取左侧的表为驱动表。
2.右外链接:选取右侧的表为驱动表。
3.mysql的子查询
4.EXPLAIN语句来帮助我们查看某个查询语句的具体执⾏计划
on过滤条件
ON⼦句中的过滤条件 对于外连接的驱动表的记录来说,如果⽆法在被驱动表中找到 匹配ON⼦句中的过滤条件的记录,那么该记录仍然会被加⼊到 结果集中,对应的被驱动表记录的各个字段使⽤NULL值填充。 需要注意的是,这个ON⼦句是专⻔为外连接驱动表中的记录在 被驱动表找不到匹配记录时应不应该把该记录加⼊结果集这个 场景下提出的,所以如果把ON⼦句放到内连接中,MySQL会把 它和WHERE⼦句⼀样对待,也就是说:内连接中的WHERE⼦句 和ON⼦句是等价的。
⼀般情况下,我们都把只涉及单表的过滤条件放到WHERE⼦句中,把 涉及两表的过滤条件都放到ON⼦句中,我们也⼀般把放到ON⼦句中 的过滤条件也称之为连接条件。
左外连接的用法
SELECT * FROM t1 LEFT [OUTER] JOIN t2 ON 连接条件 [WHERE 普通过滤条件];
mysql的mvcc原理
当事务的隔离级别是rc rr时。采用的是mvcc(多版本并发控制).