MySQL优化

逻辑架构图​​​​

索引

目的:提高数据查询效率

实现:常见的有哈希表、有序数组、搜索树

哈希表:新增内容很快,但做区间查询很慢,适用于等值查询的场景。

有序数组:对等值查询和范围查询速度都很快,但更新数据很慢,只适用于静态存储引擎。

查询效率

count(字段)<count(主键 id)<count(1)≈count(*),建议尽量使用 count(*)

案例一:条件字段函数操作

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。

案例二:隐式类型转换

如果比较的字符的类型不同,解释器会自动转换类型,这时可能就会发生案例一的情况,

看 select “10” > 9 的结果:如果规则是“将字符串转成数字”,那么就是做数字比较,结果应该是 1;如果规则是“将数字转成字符串”,那么就是做字符串比较,结果应该是 0。

案例三:隐式字符编码转换

如果比较的字符的编码凡事不同,解释器会自动转换编码,这时可能就会发生案例一的情况,

慢查询性能问题

MySQL 中,会引发性能问题的慢查询,大体有以下三种可能:

  1. 索引没有设计好,通过创建索引来解决;
  2. SQL 语句没写好,参考上面的案例;
  3. MySQL 选错了索引,给这个语句加上 force index。

join语句

总是应该使用小表做驱动表,在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与 join 的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值