首页 > 解决方案 > 如何提高 mysql COUNT 查询的速度?

问题描述

如何提高此查询的速度?目前只需要几秒钟就可以加载查询所在的 php 文件,甚至不需要查询任何内容。

我有一个关于技能趋势、职位和行业的索引。排序规则:utf8mb4_unicode_ci

$sql = "SELECT 
   COUNT(skillsTrends), 
   skillsTrends,
   jobtitle,
   industry,
   industry_url 
FROM fr_skills_trends 
WHERE industry IN ('". implode("', '", $industryInsertSql). "') 
  AND LENGTH(skillsTrends)<=35 
  AND reg_date >= NOW() - INTERVAL 3 MONTH 
GROUP BY skillsTrends ORDER by LENGTH(skillsTrends) DESC";

记录数 < 1,000,000。

标签: phpmysqlsqlcountquery-optimization

解决方案


试试这个覆盖指数

CREATE INDEX fr_skills_trends_date_industry 
          ON fr_skills_trends 
             (reg_date , industry, skillsTrends);

它应该有助于提高查询的性能。

而且,您的查询滥用了 MySQL 臭名昭著的对 GROUP BY 的非标准扩展。试试这个。

SELECT 
   COUNT(skillsTrends), 
   skillsTrends,
   jobtitle,
   industry,
   industry_url 
FROM fr_skills_trends 
WHERE industry IN ('". implode("', '", $industryInsertSql). "') 
  AND LENGTH(skillsTrends)<=35 
  AND reg_date >= NOW() - INTERVAL 3 MONTH 
GROUP BY skillsTrends, jobtitle, industry, industry_url
ORDER by LENGTH(skillsTrends) DESC

推荐阅读