风一样的回忆

新浪微薄腾讯微薄

最新碎语:从未遇见一位没亏过钱的富人,却遇见许多从未亏掉一毛钱的穷人

您的位置:风一样的回忆 >mysql> [原创]mysql优化实例,性能提高9倍.

[原创]mysql优化实例,性能提高9倍.

最近要做一个随机红包功能。

需求:通过企业微信号发布一个2000块,3000份的随机红包。当会员分享一篇文章后,会自动领取一份红包,打开红包获取随机金额。

这个功能有2点比较重要

1、通过递归实现红包的随机数组,并存入到数据库

2、mysql随机查询出一条记录

注意:

上述2 有两种方法懂通过rand()可以实现,并且查询的表已经添加的相关的索引,实际执行时间最高相差9倍..... 可见Mysql性能优化是多么重要

1、直接使用order by rand() limit 1 ,查询耗时:0.018秒

select money,status,id from red_packets where status=0 order by rand() limit 1;

2、优化后的SQL,同样使用rand(),只是rand变成了查询条件的一部分,查询耗时:0.002秒

select money,status,id from red_packets where id >=(select floot(rand()*((select 
max(id) from red_packets)-(select min(id) from red_packets))+(select min(id) from 
red_packets))) and status=0 order by id limit 1

上述两种查询出得的结果都满足实际需求,但是性能却相差九倍,

---

转载请注明本文标题和链接:《[原创]mysql优化实例,性能提高9倍.

分享到:

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交