好的,由于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