【发布时间】:2011-12-04 09:00:28
【问题描述】:
我需要从表中提取一个随机 ID。目前只有少数记录存在,但随着时间的推移它们会增长。获取这个id的方法在Php或者MySql中有哪些,它们之间的取舍、后果是什么。最后一件事我需要速度和性能。
【问题讨论】:
我需要从表中提取一个随机 ID。目前只有少数记录存在,但随着时间的推移它们会增长。获取这个id的方法在Php或者MySql中有哪些,它们之间的取舍、后果是什么。最后一件事我需要速度和性能。
【问题讨论】:
select * from YOUR_TABLE order by rand() limit 1
【讨论】:
您可以直接在 SQL 中实现这一点:
SELECT `idfield` FROM `table` ORDER BY RAND() LIMIT 0,1;
也可以see here 获取一些替代方案。
这将是一种比在 PHP 中构建随机化然后传递给 mySQL 更简单的执行方法,尽管上面的链接详细说明了各种方法的优点。
【讨论】:
SELECT id FROM table ORDER BY RAND() LIMIT 1
这基本上是:取表,按随机数对记录进行排序,并获取第一条记录的 ID。
【讨论】:
已经有很多问题和答案:
mysql query with random and desc
如果您的记录少于 500,000 条,则 RAND() 非常好。
SELECT * FROM tbl_name ORDER BY RAND() LIMIT 1
【讨论】:
好吧,您可以使用 RAND() 获得一个随机数,但您仍然必须调用该方法/函数,直到您真正得到一些东西(由于删除,您可以将 1,2,5,6,100 作为 id`s) . 在此http://jan.kneschke.de/projects/mysql/order-by-rand/ 上有一个帖子 程序可能很有用(但据说很慢......): 1 var 获取最大值 然后在 1 和那个区间内产生一个随机数(或得到最小值) 然后查询
【讨论】: