Mysql优化

一、索引相关

1.在一个大表上快速创建索引

可以考虑先导出数据,删除然后新建表,最后再将以前的数据导入,这样比在原有大数据量表上直接建索引快速一些

2.复杂查询查看sql执行计划(explain)

3.尽量少使用not in,not exist,not null这样的查询

4.对于多列索引,尽可能避免范围查询(因为范围查询字段后面的字段无法使用索引)

如idx_user_club(user_id,club_id),如果查询中有user_id的范围查询,则后面的club_id不会用到索引

因此对于这样的查询要麽避免范围查询,要麽将范围查询通过其它自定义的维护字段转换为等值查询


Explain时各个列含义

Type列

"index" 表示Mysql使用索引扫描来排序


Extra列

“Using Where” 表示Mysql服务器将存储引擎返回行以后再应用过滤条件

“Using index” 表示Mysql查询时使用到了覆盖索引



选择索引和编写利用索引的查询时,应注意:

单行访问是很慢的;

按顺序访问范围数据是很快的;

索引覆盖查询是很快的。

总结来说就是,编写查询语句时应该尽可能选择合适的索引以避免单行查找,尽可能地使用数据原生顺序从而避免额外的排序操作,

并尽可能的使用覆盖索引



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值