2013-05-28 20 views
0

好了,我有以下模式和查詢,這是非常慢的(使用真實數據時),因爲ORDER BY的:MySQL的ORDER BY在連接表

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

按MySQL的人:「您正在連接多個表,並且ORDER BY中的列並非全部來自用於檢索行的第一個非常數表(這是EXPLAIN輸出中沒有常量連接類型的第一個表)。「

但我仍然需要按該列排序。我將如何做到這一點?

回答

0

UPDATE:因爲小提琴被更新:

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 
+0

對不起,第一小提琴錯了..沒有組在那裏... –

+0

而且,我想你的查詢,併爲2x速度較慢然後我有什麼...... :( –

+0

@DanielD你是如何嘗試查詢,如果第一個小提琴是錯的... – Stephan