0

OK、次のスキーマとクエリがありますが、ORDER BY のために (実際のデータを使用する場合) 非常に遅いです。

http://sqlfiddle.com/#!2/5e7bb/10

mysql man によると、「多くのテーブルを結合しており、ORDER BY の列はすべて、行を取得するために使用される最初の非定数テーブルからのものではありません。(これは、定数を持たない EXPLAIN 出力の最初のテーブルです。結合タイプ)」

しかし、私はまだその列でソートする必要があります。どうすればこれを行う必要がありますか?

4

1 に答える 1

0

更新:フィドルが更新されてから:

SELECT
    cpa.product_id, 
    cp.product_internal_ref, 
    cp.product_name, 
    cpa.product_sale_price, 
    cpa.is_product_service, 
    cpa.product_service_price
FROM 
    catalog_products_attributes cpa
JOIN
    catalog_products cp ON cp.product_id = cpa.product_id 
WHERE
    cpa.product_id IN (
        SELECT
            product_id
        FROM 
            catalog_products_categories
        WHERE
            category_id = 41 
    )
ORDER BY 
    cpa.product_service_price DESC 
于 2013-05-28T08:11:14.977 に答える