【发布时间】:2019-01-18 11:51:19
【问题描述】:
我有两张桌子,Cars 和 Defect。我通过将car_id 作为外键传递给缺陷表来维护关系。
我在汽车表中有 3000 条记录,在缺陷表中有 16K 条记录(有 open_defect 和 close_defect)。我正在尝试找出所有具有开放缺陷计数的 Cars(3000)(如果没有任何针对汽车的开放缺陷应返回 0)。
我正在尝试一些查询:
SELECT cars.cars_id_primary ,IF(COUNT(defect.defect_id_primary)>0,1,0) AS `def_count`
FROM cars
LEFT JOIN defect ON cars.cars_id_primary = defect.cars_id AND defect.defect_status_id =1
WHERE cars.stage_id !=5
GROUP BY cars.cars_id_primary
ORDER BY cars.updated_on
这个查询给了我结果,但执行时间太长。 需要优化这个查询。我一直在优化。
欢迎任何帮助,提前致谢。
【问题讨论】:
-
有关性能的问题应包括 SQL 查询中涉及的每个表的表结构 (
SHOW CREATE TABLE <table>) 结构以及EXPLAIN <query> -
你想在 select 子句中使用汽车表中的列吗?
标签: mysql sql join group-by count