[英]MySQL Grouping SubQuery Optimization
我有一個類別表和一個產品表。 產品具有category_id和maker_id。
我正在嘗試返回一個類別名稱表,以及一個類別是否包含屬於給定$ maker_id的任何產品的二進制文件(如PHP代碼所定義)。
我當前的方法計算每個類別中有多少個匹配的產品,但是我假設有一種更快的方法,因為我只需要是/否。 當前代碼:
SELECT
c.name,
SUM(CASE WHEN p.maker_id = '{$maker_id}' THEN 1 ELSE 0 END) AS already_used
FROM categories c
LEFT JOIN products p ON p.category_id = c.id
GROUP BY c.id
我正在閱讀使用EXISTS的知識,但是我發現的所有示例都在WHERE子句中使用了它。 謝謝!
您可以嘗試以下方法:
SELECT c.name,COUNT(1) AS already_used, SUM(IF(p.status = 'ready', 1, 0)) AS ready_count
FROM categories c
LEFT JOIN products p
ON (p.category_id = c.id)
WHERE p.maker_id = '{$maker_id}'
GROUP BY c.id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.