0

我有一个 jquery 滚轮/滚轮,它显示从我的“有用提示”数据库表查询返回的记录片段。我想将滚动条保持在大约 15 条记录,但并不总是前 15 条记录。

编写如下查询是否更有效:

SELECT *
FROM table
ORDER BY RAND()
LIMIT n

哪个返回随机结果,或者我返回整个查询并让我的 ColdFusion 组件提供随机数的查询结果?

我的滚动条的未来也将包括我的“待售物品”表中的随机记录,所以我需要记住这一点。

4

3 回答 3

4

我同意 bemace 的观点,即返回不会用于 Coldfusion 的大量结果集是一种永远无法收回的资源浪费。

但是在使用 MySQL 的 RAND() 函数进行排序时要小心——一旦超过 100,000 条记录,它就不能很好地扩展见图表),你应该考虑使用替代方案

于 2010-10-25T16:24:32.370 回答
1

返回整个结果集然后他们将大部分结果都扔掉肯定会降低效率。

当您需要包含来自其他表的数据时,您可以运行另一个查询,就像您已经拥有的查询一样,然后在 ColdFusion 中将结果混在一起。

为了完整起见,这样的事情是可能的,虽然太慢而不实用:

( SELECT * FROM table1 )
UNION
( SELECT * FROM table2 )
ORDER BY RAND()
LIMIT 30 
于 2010-10-25T16:21:55.080 回答
1

除非您正在缓存一个相对较小的静态查询,否则在数据库端随机化记录通常更有效。这样你每次只提取 15 条记录,而不是表中的所有记录。

于 2010-10-25T16:24:01.590 回答