好的,由于ORDER BY,我具有以下非常慢的架构和查询(使用真实数据时):

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

按照mysql man的说法:“您正在联接许多表,并且ORDER BY中的列并非全部来自用于检索行的第一个非恒定表。(这是EXPLAIN输出中的第一个没有const的表。连接类型。)“

但我仍然需要按该列排序。我该怎么做?

最佳答案

更新:由于小提琴已更新:

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

08-19 19:36