rand mysql_MySQL:RAND()

此解决方案最好使用索引列.

下面是一个标有100,000行的优化查询工作台的简单示例。

优化:300 msSELECT

g.*FROM

table g        JOIN

(SELECT

id    FROM

table

WHERE

RAND() 

((4 / COUNT(*)) * 10)

FROM

table)

ORDER BY RAND()

LIMIT 4) AS z ON z.id= g.id

关于极限安装的注意事项*限制4和4/计数(*)。4s必须是相同的号码。改变你返回的次数并不会对速度造成太大的影响。在极限4和极限1000的基准是相同的。最高可达600毫秒

关于联接的注意事项:随机化-仅仅是id-比整行随机化要快。因为它必须将整个行复制到内存中,然后将其随机化。联接可以是链接到子查询ITS的任何表,以防止tablescans。

注哪里条款:WHERE计数限制了随机结果的数量。它获取一个百分比的结果,并对它们进行排序,而不是对整个表进行排序。

注子查询:if do联接和Extern外WHERE子句条件,您需要将它们同时放在子查询和子查询中。有一个准确的计数和提取正确的数据。

联合国国际刑事法庭:1200 msSELECT

g.*FROM

table gORDER BY RAND()LIMIT 4

行家

比order by rand()..此解决方案可以使用具有索引列的任何表。

反方

对于复杂的查询,它有点复杂。需要在子查询中维护两个代码基

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值