1

我有一个应用程序,其中几乎所有内容都是动态的。我正在为用户创建一个编辑表单,并且基本上需要搜索查询以选择一组复选框。

我有一个表,将用户分配给保存用户 ID 和程序 ID 的程序,这些程序映射到用户表和程序表中的相应记录。最初,我抓住一个用户和所有程序,然后循环程序查询以构建复选框。

<cfloop query="Rc.programs">
    <dd><input type="checkbox" name="programs" value="#Rc.programs.id#" /> #Rc.programs.name#</dd>
</cfloop>

理想情况下,我想要做的是提取程序成员表中的所有记录并通过它进行某种搜索。我可以对查询进行查询,但我想知道是否有更快的方法来本质上搜索查询。如果这有助于人们理解,我的查询查询将如下所示。

SELECT * FROM Rc.programs WHERE programid = #Rc.programs.id#

4

1 回答 1

4

QoQ 无疑是最简单的方法,但不要忘记您的 CFQUERYPARAM:

SELECT * FROM Rc.programs WHERE programid =
   <cfqueryparam value="#Rc.programs.id#" cfsqltype="WHATEVER_IT_IS">

您还可以将查询的单个列/字段引用为数组,并使用数组函数仅搜索该列,包括 arrayFind()(可能只是在最近的版本中)。

arrayFind( Rc.programs.programId, YOUR_ID_HERE )

如果这还不够快,您总是可以在内存中构建某种数据结构或索引,并在合适的情况下将其保存在应用程序范围的变量中。

但是你的数据库真的那么慢吗?减少页面执行的查询数量几乎总是一件好事,但对于普通的、不复杂的查询,您可能无法超越数据库服务器的速度、缓存等。

于 2011-02-22T16:12:24.087 回答