2014-01-21 73 views
0

我需要運行我的服務器內存這個簡單的SQL查詢幫助:緩慢的MySQL查詢來獲取產品ID和類別ID

SELECT p.product_id, c.category_id 
FROM product p, product_to_category ptc, category c  
WHERE p.status = "1" AND  
p.product_id = ptc.product_id AND 
c.category_id = ptc.category_id 
GROUP BY p.product_id; 

有什麼不對呢?我只想獲取產品ID和產品的類別。

+0

你有這些列的索引? – opalenzuela

+0

不使用羣組..通過嘗試區別 – sumit

+0

區別而不是羣組返回錯誤結果 – thecore7

回答

1

你不需要category表。

SELECT p.product_id, ptc.category_id 
FROM product p, product_to_category ptc  
WHERE p.status="1" 
    AND p.product_id=ptc.product_id 

而且隨着加入

SELECT p.product_id, ptc.category_id 
FROM product p 
JOIN product_to_category ptc 
    ON p.product_id=ptc.product_id 
WHERE p.status="1" 
+0

你是對的miltos!thnks – thecore7

0

您的查詢似乎不太可能會有這樣糟糕的表現。如果你錯過了where子句中的條件之一,你可能會產生

  • :但是,您可以通過使用顯式join語法,以啓動查詢更易於理解:

    SELECT p.product_id, c.category_id 
    FROM product p join 
        product_to_category ptc 
        on p.product_id = ptc.product_id join 
        category c 
        on c.category_id = ptc.category_id 
    WHERE p.status="1" 
    GROUP BY p.product_id; 
    

    一些可能性很多行。

  • 您的表格對於您正在使用的系統來說過大。
  • 你實際上所剩無幾,爲聚集臨時存儲空間,您的臨時空間已滿
相關問題