mysql优化的一点感悟

背景:每张数据表约80W条,按照日期生成,对应用户在游戏中的各类操作。

常规的优化方式

1. 根据常用检索字段建立索引

按照实际测试,不加其余任何操作,未建立索引的情况下,80W条数据,select语句耗时0.3-0.5s左右,建立索引后并未有很大提升(也许是数据总量依然过低),平均耗时只能降低0.0Xs。

2.根据需求尽量精确查询字段、并尽量多的加入条件语句

根据实际测试,未建立索引的情况下,select *,比select id,基本耗时会增加0.1-2s,where条件越精确,过滤越多,查询越快。

实用的方式

1.尽量采用程序内置函数去操作结果,数据库只做基本的检索

项目中因为用到了非常多的连接甚至跨表查询,按照实际测试情况,一条能符合我们需求的sql语句,检索时间是5-6s….未加索引,加索引并没有很大的差别。但是若采用php内置数组函数去合并、交集、差集、过滤、去重等,等待时间则可以缩短至2-3s,提升50%。

2.对于连续的过滤条件,例如检索字段插入时间从3月1日-3月15日的数据,使用between而非大于、小于

实际测试,同样的数据量,大于、小于要比between慢50%以上。

3.如果对于时效性没有严格的要求,可以开启mysql配置文件中的查询缓存

去除忘了消耗,除第一次外,之后全部相同的检索耗时0s。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值