MySQL WHERE IN还是范围查询

MySQL WHERE IN还是范围查询,第1张

线上出了一个bug:参与集福气活动的很多玩家奖励少发了。

要补发给玩家的奖励可以通过表A和奖励发放表计算得出(需要补发的奖励 = 表A - 实际奖励发放表)。

现在的做法是写个job把这份补发奖励的名单拉取来(没错不等关服维护了,直接在线跑job)。这里要强调一点:只有在“实际奖励发放表”存在的玩家才有可能需要补发奖励。

第三个方法是我用来凑数的,请各位千万不要这么做。除非实际奖励发放表中玩家人数只有个位数。那到底是用第一个还是第二个呢?这个问题主要看两点:

采用方法二:范围查询的方式把数据加到内存中然后再筛选

需要查询的MySQL数据很多(玩家名单list有几万个),使用范围查找能加快查询速度并且即使将表A的数据全部加载在内存中job服务器也是没有压力。

假设是数组形式如:需要查1,2,3,4,5,6的数据就用in :select * from table where num in(1,2,3,4,5,6)

如果需要查询范围内的,如:查询1-6范围内的可以:

select * from table where num >1

and num <6

MYSQL查询结果筛选范围使用LIMIT字句,两种语法:

SELECT ....... LIMIT n

SELECT ....... LIMIT m,n

第一种方法返回查询结果的前n条,如果只要第一条就使用LIMIT 1,类似于其它数据库系统里面的TOP n,但这不是你本贴需要的

第二种方法返回查询结果从第m条开始的n条,注意的是m从0开始,这是你本贴需要的,你可以使用LIMIT 1,9999999999达到你的要求,跳过第一条


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8633431.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存