优化MySQL计数(*)查询
我正在创建一个mysql查询,它需要计算与每列关联的行数。我想知道是否有人可以帮我优化它,因为目前它需要10秒左右的时间运行,这是为我的网站。(不理想) 查询是:优化MySQL计数(*)查询,mysql,sql,Mysql,Sql,我正在创建一个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(*)
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;
我相信有更快的方法可以做到这一点?如果这确实是运行此操作的唯一方法,那么还有哪些其他选项可以加快此操作的速度?请确保在您分组的每一列上都有一个索引。不过,MySQL必须扫描索引
另一种解决方案是计算一次计数并存储它们,然后根据需要更新它们。如果您只需要计数(如您在原始问题中所述),您可以执行以下操作:
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
希望有帮助 @TomaszKowalczyk:这是一个神话:计数(1)的可能重复也会起作用。。。但我认为这不会对共享您的桌子结构产生任何影响。