如果您无论如何都要避免相关的子查询,通常可以得到更好的性能:
SELECt MT.column_1, MT.column_2, SUM(CASE WHEN P.product IS NULL THEN 1 ELSE 0 END) AS totalFROM My_Table MTLEFT OUTER JOIN Products P ON P.product = MT.column_2WHERe MT.is_rated = '1'GROUP BY MT.column_1, MT.column_2
假设在Products表中最多只能有一个匹配项(Products,而不是Table_Products-
当然是一个表,因此不要在名称中加上该匹配项)。换句话说,如果product是Products表的PK(或AK),则此方法将起作用。
如果不是这种情况,并且
Products表中可能有多个匹配项,则可以
JOIN转到
DISTINCT在该
product列上使用的子查询。



