如何提高 mysql COUNT 查询的速度?
How to improve a mysql COUNT query for speed?
如何提高此查询的速度?目前只需要几秒钟就可以加载查询所在的 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。
试试这个 covering index。
CREATE INDEX fr_skills_trends_date_industry
ON fr_skills_trends
(reg_date , industry, skillsTrends);
它应该有助于提高查询性能。
而且,您的查询误用了 MySQL's notorious nonstandard extension to 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
如何提高此查询的速度?目前只需要几秒钟就可以加载查询所在的 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。
试试这个 covering index。
CREATE INDEX fr_skills_trends_date_industry
ON fr_skills_trends
(reg_date , industry, skillsTrends);
它应该有助于提高查询性能。
而且,您的查询误用了 MySQL's notorious nonstandard extension to 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