Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[疑问] 能否获得随机资讯列表?

[复制链接]
cctext 发表于 2009-7-21 21:26:10 | 显示全部楼层 |阅读模式
如果需要SQL才可以实现的话,该怎么写?

随机获得一定数量的资讯。
回复

使用道具 举报

littlehz 发表于 2009-7-21 21:44:39 | 显示全部楼层
模块中没有随机排序功能。如果数据量小用以下SQL语句。
  1. SELECT * FROM `supe_spaceitems` ORDER BY RAND() LIMIT 0,5
复制代码
数据量小的时候查询速度还是很快,但是在列表数据量大于1万条数据的时候不推荐使用,这个语句效率低,效率高的SQL语句到网上找找吧。
回复

使用道具 举报

 楼主| cctext 发表于 2009-7-22 12:49:28 | 显示全部楼层
找到了。。
抓取随机的数据段,也就是说数据是连续的,至少数据库中的id号是连续的。
优点:抓取速度快。
缺点:分散度比较低。
网上其他人测试的结果是:8千条记录的表抓取5条,执行一次需要0.02 sec。
但是只有4.1.*以上版本才支持这样的查询。
我的测试结果是:56W条记录的表抓取10条,执行一次需要0.0269 sec,
SELECT *
FROM table_name AS r1
( SELECT ROUND( RAND( ) * ( SELECT MAX( id ) FROM table_name ) ) AS id2 ) AS r2
WHERE r1.id >= r2.id2
ORDER BY r1.id ASC
LIMIT 10
回复

使用道具 举报

ljzxh 发表于 2009-7-22 13:12:46 | 显示全部楼层
好东西,收藏,研究。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-9-11 21:27 , Processed in 0.100162 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表