mysql优化最佳实践一

概述

我们今天主题主要是针对一些简单的优化, 我们拿到一个慢sql,首先就是先explain看一下大概情况,其中有一栏Extra中,有三个值我们需要注意一下,也是我们最常见的三个值,分别是Using where Using index Null Using intersect

案例

//表结构
create table test.user
(
    id          int auto_increment
        primary key,
    user_id     int                                not null,
    children_id int                                not null,
    create_time datetime default CURRENT_TIMESTAMP null,
    update_time datetime default CURRENT_TIMESTAMP null
);
//sql语句
select * from user where user_id=2 and children_id=7 ;

Using where(给and的一个字段加索引)

explain select * from user where user_id=2 and children_id=7 ;

在这里插入图片描述
说明: 这里给user_id加了索引, 可以使用user_id过滤掉部分数据,但是children_id这个条件会Using where单个进行比对

Null(给and的两个字段加联合索引)

explain select * from user where user_id=2 and children_id=7 ;

在这里插入图片描述
说明:这里给两个字段加了联合索引,结果走的是联合索引,效率明显提高了,filtered 100%
.当然并不是说所有的and条件都要去加联合索引,只要挑选几个辨识度高的字段进行联合过滤就行了,效率很高.

Using index

explain select user_id from user where user_id=2 and children_id=7 ;

在这里插入图片描述
说明: 这个是在Null情况下,将查询字段改为索引覆盖的字段情况.

Using intersect(给and的每一个字段单独加索引)

explain select * from user where user_id=2 and children_id=7 ;

在这里插入图片描述
说明: 这种情况下,其实是mysql使用了索引合并的优化手段,其作用类似于上面的联合索引.介于Using where 和Null之间

总结

1.效率上来讲 Using index>Null>Using intersect>Using where
2.一般情况下,如果走了Using intersect,一般建议两个字段可以建立联合索引了
3.Using intersect又称索引合并, 是mysql认为这两个字端比较有辨识度的情况下才会帮你优化成这种方案,其实我理解就是mysql就是暗示你可以建立联合索引了
4.可见,联合索引在一些情况下,可以大大提高效率
5.按照mysql检索语句执行,一般只会设计一颗B+树,其他查询使用Using where来扫描剩下条件进行逐一筛选. Using intersect是唯一一种情况会操作两颗B+树.
6.这里也并不是建议and条件全都建立一个联合索引,一定是辨识度高的几个字段建立联合索引,其他剩下的数据不多,后面的条件走Using where也无所谓

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
MySQL生产环境的最佳实践包括以下几个方面: 1. 定期备份:确保定期备份MySQL数据库,以防止数据丢失或损坏。可以使用物理备份或逻辑备份的方式进行备份,并将备份文件存储在安全的位置。 2. 安全设置:采取必要的安全措施,如设置强密码、限制远程访问、禁用不必要的MySQL功能等,以防止未经授权的访问和潜在的安全漏洞。 3. 定期更新和维护:及时应用MySQL的安全更新和补丁,以修复已知的漏洞和问题。此外,也需要定期进行数据库性能优化和维护,如索引优化、表碎片整理等。 4. 监控和警报:设置监控和警报系统,以实时监控MySQL数据库的性能指标、连接数、查询速度等,并在出现异常情况时及时发出警报,以便及时处理。 5. 高可用和容灾:在生产环境中使用MySQL的高可用解决方案,如主从复制、主主复制、MySQL集群等,以确保系统的高可用性和容灾能力。 6. 调优和优化:根据具体的业务需求和负载特点,对MySQL进行性能调优和优化,如调整缓冲区大小、优化查询语句、合理设置并发连接数等,以提升数据库的性能和响应速度。 7. 日志记录和审计:开启MySQL的日志记录功能,记录重要的操作和事件,以便进行故障排查和审计。此外,也可以使用第三方工具进行更全面的日志记录和分析。 这些是MySQL生产环境中的一些最佳实践,但具体的实施方式还需要根据具体业务需求和环境特点来确定。同时,也建议参考MySQL官方文档和社区的最佳实践指南,以获取更详细和全面的建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值