连接表中的mySQL ORDER BY

时间:2013-05-28 08:06:48

标签: mysql sql-order-by filesort

好的,所以我有以下架构和查询因为ORDER BY而非常慢(当使用真实数据时):

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

根据mysql man:“你正在加入很多表,而ORDER BY中的列并不是来自用于检索行的第一个非常量表。(这是EXPLAIN输出中第一个没有的表)有一个const连接类型。)“

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

1 个答案:

答案 0 :(得分: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