我正在创建一个需要计算与每列关联的行数的mysql查询。我想知道是否有人可以帮助我优化它,因为目前它需要大约10秒才能运行,这是我的网站。 (不理想)
查询是:
SELECT model_make, count(*) FROM deals group by model_make UNION ALL
SELECT model_brand, count(*) FROM deals group by model_brand UNION ALL
SELECT model_name, count(*) FROM deals group by model_name;
我确信有更快的方法吗?如果这真的是运行它的唯一方法,还有什么其他选择可以加快这个速度?
答案 0 :(得分:0)
确保您在要分组的每个列上都有索引。但是,MySQL必须扫描索引。
其他解决方案是计算一次计数并存储它们,然后根据需要更新它们。
答案 1 :(得分:0)
如果您只需要计数(就像您在原始问题中表达的那样),您可以这样做:
SELECT
COUNT(DISTINCT model_make)) as CountModelMake,
COUNT(DISTINCT model_brand)) as CountModelBrand,
COUNT(DISTINCT model_name)) as CountModelName
FROM deals group by model_make
希望它有所帮助!