我需要帮助这个简单的SQL查询,这个查询耗尽我的服务器内存:
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 :(得分: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"
答案 1 :(得分:0)
您的查询似乎不太可能具有如此差的性能。但是,您可以先使用显式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;
一些可能性:
where
子句中的某个条件,则可能会生成大量行。