1

ほとんどすべてが動的であるアプリケーションがあります。ユーザー用の編集フォームを作成していますが、基本的にクエリを検索してチェックボックスのグループを選択する必要があります。

ユーザーを、usersテーブルとprogramsテーブルの対応するレコードにマップするuseridとprogramidを保持するプログラムに割り当てるテーブルがあります。最初に、1人のユーザーとすべてのプログラムを取得し、プログラムクエリをループしてチェックボックスを作成します。

<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 )

それが十分に速くない場合は、いつでも何らかのデータ構造またはインデックスをメモリに構築し、それが適切な場合はアプリケーションスコープ変数に保持することができます。

しかし、あなたのデータベースは本当に遅いですか?ページによって実行されるクエリの数を減らすことは、ほとんどの場合良いことですが、平均して、単純なクエリでは、DBサーバーの速度やキャッシュなどに勝るものはないでしょう。

于 2011-02-22T16:12:24.087 に答える