Mysql随机抽取解决方案

本文探讨了在MySQL中根据条件随机抽取数据的SQL写法,针对几百条数据的题库,提出了两种随机抽取单选题或判断题的方法,并比较了它们在小数据量下的性能。在测试中,直接使用RAND()函数和使用右连接的方式在0.8s到2.8s之间,而加入索引对于查询速度的影响存在疑问。
摘要由CSDN通过智能技术生成

关于Mysql单表根据条件随机抽取N条数据的sql写法

业务要求

现在有一个题库,大概几百条数据,表格字段如下:
在这里插入图片描述
要求根据考题范围(code_item/code_subItem)来随机抽取50道题目,其中40道单选题,10道判断题。
其他业务逻辑这里就不阐述了。只说sql语句这里有2个要求。
1.根据code_item 或者 code_subItem 随机抽取一条单选题或者判断题。
2.根据code_item 或者 code_subItem 随机抽取n条不重复的单选题或者判断题。

sql

相关资料连接:1.mysql生成不重复随机数(unique number generation)
2.mysql高效率随机获取n条数据写法

查找相关资料后,发现需要用到mysql 自带的rand()函数,但是资料里给出的答复都是大数据情况下,直接用order by rand()会造成全表查询非常影响查询效率。
参考资料生成符合自身表格查询的sql如下:

随机抽取单条数据示例:直接用函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值