php - 如何提高 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。
解决方案
试试这个覆盖指数。
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
推荐阅读
- symfony - Shopware 6 计划内容
- r - 最小二乘均值与交互图点坐标不匹配
- postgresql - Heroku:org.postgresql.util.PSQLException:服务器不支持 SSL
- json - 如何在 JSON 表达式中包含参数:“解析 JSON 的问题”
- laravel - Laravel Nova 检查管理员是否登录
- sql - MS SQL - 带有动态过滤器的静态 sql 查询
- class - 如何使用对象填充@State var?
- django - 在 django 中根据某些条件创建对象
- apache-kafka - 来自数据库的 KAFKA 初始加载
- microsoft-graph-api - MS Graph API:webUrl 到 driveItem