ColdFusion 9-前n个随机查询结果
我做了一系列的查询,随机得到5个结果,问题是需要一段时间才能完成,主要是因为它涉及到一个循环来分配一个rand值,我可以根据它排序(Railo可以在查询中这样做) 我想知道是否有人处理过这件事,并且知道如何加快速度ColdFusion 9-前n个随机查询结果,coldfusion,coldfusion-9,cfml,qoq,Coldfusion,Coldfusion 9,Cfml,Qoq,我做了一系列的查询,随机得到5个结果,问题是需要一段时间才能完成,主要是因为它涉及到一个循环来分配一个rand值,我可以根据它排序(Railo可以在查询中这样做) 我想知道是否有人处理过这件事,并且知道如何加快速度 我的速度低于200毫秒,这还不错,但我相信速度可以加快。您可能根本不需要使用QoQ 一种选择可能是将原始查询编写为: SELECT TOP 5 whatever,you,need FROM table ORDER BY rand() 根据正在使用的数据库服务器更新语法 另一个选项是
我的速度低于200毫秒,这还不错,但我相信速度可以加快。您可能根本不需要使用QoQ 一种选择可能是将原始查询编写为:
SELECT TOP 5 whatever,you,need
FROM table
ORDER BY rand()
根据正在使用的数据库服务器更新语法
另一个选项是,可以对常规查询和QoQ执行以下操作:
createObject(“java”,“java.util.Collections”)。洗牌(数组)
)当然,如果您的主键只是一个自动递增的整数,那么您可以使用
SELECT MAX(Id)
然后使用RandRange
来选择您的五个项目。您可能根本不需要使用QoQ
一种选择可能是将原始查询编写为:
SELECT TOP 5 whatever,you,need
FROM table
ORDER BY rand()
根据正在使用的数据库服务器更新语法
另一个选项是,可以对常规查询和QoQ执行以下操作:
createObject(“java”,“java.util.Collections”)。洗牌(数组)
)SELECT MAX(Id)
,然后使用RandRange
来选择五项。对于Microsoft SQL Server(v2005+),此查询语法将获得5条随机记录:
SELECT TOP 5 *
FROM table
ORDER BY NEWID()
对于Microsoft SQL Server(v2005+),此查询语法将获得5条随机记录:
SELECT TOP 5 *
FROM table
ORDER BY NEWID()
我在Railo(ColdFusion 9)上,TOP
和NEWID()
都不能用于查询查询(QoQ)。如果您碰巧遇到了这个用例,并且必须根据QoQ采取行动,那么这里有一个解决方案:
<cfquery name="randomizedQueryObject" dbtype="query" maxrows="10">
SELECT *, RAND() as rand
FROM someQueryObject
ORDER BY rand
</cfquery>
选择*,RAND()作为RAND
来自某个查询对象
兰特订购
这将从更大的结果集中返回10个随机项,并以QoQ的形式工作。简短而简单。我在Railo(ColdFusion 9)上,TOP
和NEWID()
都不适用于查询查询(QoQ)。如果您碰巧遇到了这个用例,并且必须根据QoQ采取行动,那么这里有一个解决方案:
<cfquery name="randomizedQueryObject" dbtype="query" maxrows="10">
SELECT *, RAND() as rand
FROM someQueryObject
ORDER BY rand
</cfquery>
选择*,RAND()作为RAND
来自某个查询对象
兰特订购
这将从更大的结果集中返回10个随机项,并以QoQ的形式工作。简短而简单。您不清楚您当前使用的流程-是否要求使用QoQ执行此操作?这意味着作为查询的子集,但如果结果更快,我认为您不清楚您当前使用的流程-是否要求使用QoQ执行此操作?这意味着作为查询的子集,但是如果结果更快,我就选它,谢谢,我完全忘了提到我的db类型。我使用的是MS SQL,因此
top
好的,您可能还希望ORDER BY newid()
用于MS SQL,并且可能是相关的。嘿,谢谢你,我完全忘了提到我的db类型。我使用的是MS SQL,因此top
Ok,您可能还需要ORDER BY newid()
用于MS SQL,并且可能是相关的。它在QoQ中不起作用。它说兰德遇到的问题()嗯。。。这对我来说很好。也许是因为我在铁路上,兰德()才起作用?不能肯定。即使RAND()不适用于您,也尝试以其他方式生成一个随机数,并将其放入自定义的“RAND”列中。是的,Railo允许,但ACF不适用于QoQ:(它不适用于QoQ。它说RAND()遇到的问题,嗯……对我来说很好。也许RAND()有效,因为我在Railo?不能确定。即使RAND()也不适用)不适用于您,请尝试以其他方式生成一个随机数,并将其放在自定义“rand”列中。是的,Railo允许,但ACF不在QoQ中:(