mysql随机查询数据的2个解决方案

博客讨论了在MySQL中随机查询数据的效率问题,特别是当数据库包含大量记录时。作者遇到了使用`RAND()`函数导致的查询延迟,然后通过创建子查询和利用`id`作为坐标轴进行优化,将查询时间从13秒降低到0.6秒。然而,当添加商品类型限制时,优化的查询不再有效。最终,通过减少返回字段并使用实体类解决了问题,实现了满足需求的快速查询。
摘要由CSDN通过智能技术生成

emmmm,最近又写前端又写后端,有点忙,好久没写博客,今天来更新一波。

需求:根据商城展示的商品,从数据库中随机查询出相同种类的商品30个,作为随机推介给用户。首先来认识两句sql:

SELECT FLOOR(RAND()*100)
  • 这句sql会返回从0到100的随机数一个,floor的作用是返回舍弃小数点的整数,比如4.5则返回4,相对的是ceil,4.5则返回5。
SELECT * FROM tablename ORDER BY RAND() LIMIT 1
  • 这句sql可能是百度上教你最多的,也是官方的标准sql语句,rand()就是mysql的随机返回函数。

看完上面,你是不是觉得好像有了2就完事了,没必要写这篇博客了呢?确实,我一开始也是这么写的,贴代码~

SELECT
	* 
FROM
	t_merchandise_info 
WHERE
	goods_type_name = #{
   typeName}    //如果有种类id,这里用i
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值