0

Coldfusion8 と MySQL 5.0.88 を実行しているサイトを継承しました。

製品情報を含む記事 ( A ) と、販売者の価格表を含む価格表 ( P ) の 2 つのテーブルがあります。

製品は製品テーブルで一意ですが、価格表テーブルには複数のエントリが含まれる場合があります (価格表の数によって異なります)。

私の製品検索では、Aから製品情報を取得する必要があり、ユーザーが販売者によって価格表を割り当てられている場合は、Pのそれぞれの価格表から価格を取得する必要もあります。

実際の製品クエリを実行する前に、すべての SellerID と pricelist 名を事前にコンパイルしています。これは次のようになります。

SELECT count(A.id) AS total
    FROM arts A

    <cfif variables.use_pricelists neq "">  
    LEFT JOIN preislisten p ON
            A.ean = P.ean
        AND A.sellerID = p.sellerID
        AND (
            // precompiled list - hardcoded loop
            ( P.list_name = "-Standard-" AND P.sellerID = "2222222222222" )
            OR
            ( P.list_name = "I" AND P.sellerID = "3333333333333" )
            )
    </cfif>
    WHERE
    ...

これが機能している間...それは永遠にかかります。価格表をチェックしなくても、1 秒以内に検索を実行できます。価格表を確認する必要がある場合は、7 ~ 10 秒かかります。

質問:
異なるタイプの Syntax を使用すると、これをより高速に実行できますか?

手伝ってくれてありがとう!

4

1 に答える 1

2

パフォーマンスを向上させるために、列にインデックスを付けない理由 インデックスの作成構文:

preislisten (ean) にインデックス idx_ean を作成する

于 2012-07-11T08:57:31.373 に答える