2

Coldfusion8/MySQL を使用して、モバイル デバイスで使用する製品検索を最適化しようとしています。

現在、次のことが起こっています。

1. user searches for "FOO"
2. Q1: search database for no of results
3. Q2: search again to get actual data for results FROM TO depending on pagination
4. user clicks details for a product
5. redo Q1 to get no of results
6. redo Q2 to get single result
7. use single result to query for product details (sizes, colors, pricings...)

ユーザーが結果セットから結果を選択したため、Q1 と Q2 のやり直しをスキップする方法を探しています。

質問:
既存のクエリのレコードの詳細のみが必要であることを示す変数を渡す方法だと思います。結果 1 ~ 20 があり、変数「DETAIL」と記事番号「123」を渡すとします。既存の結果セットから一致するレコードを選択する方法 = 結果セットから特定のレコードを選択する方法は?

編集: したがって、私の場合の唯一の方法は、最初にクエリを実行し、結果を Session.storage に保存してから、ストレージからそれぞれのレコードを選択し、最初の検索を再実行することだと思います。

私の最初のクエリは cfinvoke メソッド内にあるため、クエリのクエリは機能しません。そのため、それが完了すると消えてしまい、次のパススルーで最後の cfinvoke の結果をクエリできません。

また、cfc 変数スコープに格納しようとしました。また、同じ理由でうまくいきません。私はまだCF8を実行しており、cfobjectがパフォーマンスをどのように妨げるかについて多くのことを読んでいるので、cfobjectの使用を開始したくありません。

ともかく。「結果」と呼ばれる最初のクエリで、現在保存しています

<cfset Session.storate = results>

セッションストレージをダンプすると、次のようになります。

catch - query
    CACHED: false 
    EXECUTIONTIME: 2031 
    SQL: SELECT a.*, p.ek, p.vk, p.x, p.y
        FROM arts a
    LEFT JOIN p ON 
            ...
            LEFT JOIN f ON 
            ... 
            WHERE a.aktiv = "ja"
            AND 
            ... 20 conditions ...

    SQLPARAMETERS: [array]
    1) %402% 
    ... 20 parameters

    RESULTSET: 
     [Record # 1] 
        a: true
        style: 402
        price: 2.3
        currency: CHF
        ...
     [Record # 2] 
        a: true
        style: 402abc
        ...

私の質問は次のようになります。

session.storageをループしてスタイルを確認するにはどうすればよいですか? 見つかった場合、これが私の結果であり、そこから詳細ビューを作成します。

4

3 に答える 3

4

私がフォローしているかどうかはわかりませんが、私がフォローしている場合は、クエリのクエリを実行できます。これにより、ページで実行された既存のクエリをクエリできます。

<cfquery name="getOneRecord" dbtype="query">
SELECT record
FROM originalqueryname
WHERE articlenumber = 123
</cfquery>

結果を 1 つだけ取得する必要がある場合は、これがおそらく最速の方法です。

于 2012-07-13T13:13:23.980 に答える
2

単一のレコードを取得するために検索をやり直す理由がわかりません。ユーザーが詳細リンクをクリックした場合、そのリンクには、選択したアイテムへの識別子が含まれている必要があります。次に、その ID を使用してデータベースにクエリを実行し、製品の詳細を取得します。元の検索クエリは、関連データのみを結果表示に返す必要があります。

于 2012-07-13T15:30:19.350 に答える
0

考慮すべきもう 1 つのことは、cachedwithin 属性です。

于 2012-07-13T18:27:52.543 に答える