mysql总结

1、主从复制

2、sql优化(不用in,count(*),where不用函数,用between and   exists等)

https://blog.csdn.net/wenzhenyu1990/article/details/87363637

3、常见sql的书写(not exists所有都用(双重not exists))  ,  group by  having    ,max(case cid when '1' then grade end)as '科目'   union all 与union)

https://www.jianshu.com/p/0f165dcf9525

4、索引

B-Tree索引和Hash索引

hash查找快直接定位值,而B-Tree需要从根到叶子节点

哈希索引没办法利用索引完成排序 

哈希索引不支持多列联合索引的最左匹配规则 

如果有大量重复键值的情况下,哈希索引的效率会很低,因为存在哈希碰撞问题

https://www.cnblogs.com/zhouguowei/p/9753828.html

聚簇索引和非聚簇索引:回表,覆盖查询(指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取。也可以称之为实现了索引覆盖。)

(怎么建联合索引时)

最左前缀匹配:即最左优先,在检索数据时从联合索引的最左边开始匹配。所以当我们创建一个联合索引的时候,如(key1,key2,key3),相当于创建了(key1)、(key1,key2)和(key1,key2,key3)三个索引,这就是最左匹配原则

Mysql5.6的优化:索引下推(可以在like查询下减少回表查询的次数)

select * from user_table where username like '张%' and age > 10

语句有两种执行可能:

  1. 根据(username,age)联合索引查询所有满足名称以“张”开头的索引,然后回表查询出相应的全行数据,然后再筛选出满足年龄小于等于10的用户数据
  2. 根据(username,age)联合索引查询所有满足名称以“张”开头的索引,然后直接再筛选出年龄小于等于10的索引,之后再回表查询全行数据。

明显的,第二种方式需要回表查询的全行数据比较少,这就是mysql的索引下推。mysql默认启用索引下推,我们也可以通过修改系统变量optimizer_switch的index_condition_pushdown标志来控制
SET optimizer_switch = 'index_condition_pushdown=off';

https://blog.csdn.net/mccand1234/article/details/95799942

查询优化器?

建索引的原则:

Explain

https://www.cnblogs.com/gomysql/p/3720123.html

5、存储引擎

InnerDB:

Myisam:

事务隔离级别   

 

并发问题:脏读、不可重复读、幻读
SELECT … FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];

mysql慢日志查询

https://blog.csdn.net/zxc123e/article/details/77908432

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值