读书笔记《高性能Mysql》
主要是为了记录在阅读过程中的一些笔记,可能杂乱无章,也可能不知所云。
1 对count查询的优化:
sql中一个常见的错误,在括号内指定了一个列却希望统计结果集的行数。如果希望获取结果集的行数最好使用count()而不是把替换成具体的列,因为这会过滤掉结果为null的列值导致所得的结果不准确,且会带来性能的降低。
2查询索引explain的type中 all index和ref的区别:
all和index都是全表扫描,但是all是硬盘中读取,index是索引中读取,ref是非唯一索引扫描,返回匹配到搜索值的所有行,可能会查找到多个行。在聚合索引中(a,b) 对a进行查找满足ref单独查询b满足index,对非索引字段c查找满足all。ref和index这种扫描方式中通常可能伴随着回表操作,对索引进行优化时候应该尽量避免回表操作,常常可以使用索引覆盖的方法【非唯一索引通常存储的是该索引字段和唯一索引也就是pk,若在索引查找中没有获得需要的全部数值,就会根据拿到的主键id去根据id获得需要的字段,这个操作称为回表格】相关问题列表【】
3 不同索引的区别
主要是为了记录在阅读过程中的一些笔记,可能杂乱无章,也可能不知所云。
1 对count查询的优化:
sql中一个常见的错误,在括号内指定了一个列却希望统计结果集的行数。如果希望获取结果集的行数最好使用count()而不是把替换成具体的列,因为这会过滤掉结果为null的列值导致所得的结果不准确,且会带来性能的降低。
2查询索引explain的type中 all index和ref的区别:
all和index都是全表扫描,但是all是硬盘中读取,index是索引中读取,ref是非唯一索引扫描,返回匹配到搜索值的所有行,可能会查找到多个行。在聚合索引中(a,b) 对a进行查找满足ref单独查询b满足index,对非索引字段c查找满足all。ref和index这种扫描方式中通常可能伴随着回表操作,对索引进行优化时候应该尽量避免回表操作,常常可以使用索引覆盖的方法【非唯一索引通常存储的是该索引字段和唯一索引也就是pk,若在索引查找中没有获得需要的全部数值,就会根据拿到的主键id去根据id获得需要的字段,这个操作称为回表格】相关问题列表【】
3 不同索引的区别
1 MySQL架构与历史
1.5 MySQL并发控制
查看表的基本状态 SHOW TABLE STATUS LIKE 'table_name'
几个关键信息
- Check_time 使用CHECK TABKE命令最后一次检查表状态的时间
- Rows 表的行数,在MyISAM中这个数值是精确的,但是在InnoDB中是估计值。
- Data_free MyISAM 表中表示已经分配但是没使用的空间,在InnoDB中有待确认。
MyISAM 一般只会把数据写入内存,等待操作系统定期把数据刷入硬盘中,崩溃后修复的成本较高
社交软件的使用方面 少发朋友圈或者关闭朋友圈入口【简单的生活记录即可】,博客园专门用来记录技术文档或者一些心得。在电脑端的工作或者吐槽可以使用微博,手机端可以卸载微博,网上留联系方式一律只留下 不常用的微信和邮箱。所有的联系方式做好备份,每一个都可以使用2套
疑问 分表和分区可以同时使用吗,如果支持同时使用,在具体实践上是否有先例或者是否建议这样使用,会带来哪些不好的影响?比如根据时间日期分区,然后根据是否删除字段来分表是否合理呢