帮助从MySQL查询中获取或显示ColdFusion中的随机记录?

时间:2010-10-25 16:06:37

标签: sql mysql coldfusion cfc random

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

编写如下查询更有效:

SELECT *
FROM table
ORDER BY RAND()
LIMIT n

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

我的卷轴的未来将包括我的“待售商品”表中的随机记录,因此我需要牢记这一点。

3 个答案:

答案 0 :(得分:4)

我同意bemace,返回一大堆不会用于Coldfusion的结果值是浪费资源,永远无法收回。

但要谨慎使用MySQL's RAND() function for ordering - once you're over 100,000 records, it doesn't scale wellsee graph),你应该look at using alternatives

答案 1 :(得分:1)

返回整个结果集并且将大部分结果丢弃肯定会降低效率。

当你到达包含来自其他表的数据时,你可以运行另一个查询,就像你得到的那样,然后在ColdFusion中将结果一起洗牌。

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

( SELECT * FROM table1 )
UNION
( SELECT * FROM table2 )
ORDER BY RAND()
LIMIT 30 

答案 2 :(得分:1)

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