mysql-由子查询过滤的行的慢查询,该查询计算在其他表中它们的出现

时间:2019-01-10 02:54:54

标签: mysql count subquery

我要在商店表中过滤至少出现1次且至少出现X次的条形码。

表结构

表代码(现在有1.000条记录):

code (PK)

ABC
XYZ

表格条形码(现在有6.000条记录):

barcode (PK)    code

ABC             123
ABC             456
XYZ             789

表存储(现在有67.000条记录):

id (PK) barcode

1       123
2       123
3       123
4       789

如何加快查询速度?

SELECT c.code,
    IFNULL(
        (SELECT COUNT(*) count FROM store s INNER JOIN barcode b ON s.barcode=b.barcode WHERE b.code=c.code GROUP BY a.barcode ORDER BY count DESC LIMIT 1
    ),0) max
FROM codes c
GROUP BY c.code";
HAVING max>=X

x = 2的预期结果是:

code    max

ABC     3

因为只有代码ABC至少有1条条形码(123)在商店表中至少出现2次。

0 个答案:

没有答案