我正在 ColdFusion 中编写一个函数,它返回与用户输入匹配的前几条记录,以及整个数据库中匹配记录的总数。该功能将用于提供自动完成功能,因此速度/效率是其最关心的问题。例如,如果函数接收到 input "bl"
,它可能会返回{sampleMatches:["blue", "blade", "blunt"], totalMatches:5000}
出于速度目的,我尝试在单个查询中执行此操作,并最终得到如下所示的内容:
select record, count(*) over ()
from table
where criteria like :criteria
and rownum <= :desiredCount
这个解决方案的问题是它count(*) over ()
总是返回 的值:desiredCount
。我在这里看到了一个与我类似的问题,但我的应用程序没有创建临时表的权限。那么有没有办法在一个查询中解决我的问题?有没有更好的方法来解决它?谢谢!