php - 我如何加快此 mysql 查询的速度以在大型 mysql 表(200 万行)中求和一个分数

标签 php mysql database

我正在尝试在 PHP 脚本的技能表中获取个人技能的分数总和。

该表是 InnoDB,有大约 2m 条记录并且结构化:skills (id,cand_id,skillname,score)。

我的查询示例是:

select SUM(score) as skillscore FROM skills WHERE cand_id = "6509" AND skillname in ("Cascading Style Sheets","jQuery","Personal Home Page","MySQL","JavaScript","HTML","Android","industry~it")

查询大约需要 0.0006 秒,但是有 50,000 人要循环,所以需要一段时间!

我怎样才能将其速度提高 10 倍?

谢谢。

最佳答案

您正在对每个 cand_id 进行查询,在循环中触发查询是您的瓶颈。

正如两个人已经告诉您的那样,在查询末尾使用 GROUP BY cand_id 语句,您将获得性能和不需要的代码。

关于php - 我如何加快此 mysql 查询的速度以在大型 mysql 表(200 万行)中求和一个分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989680/

相关文章:

mysql - 如何在mysql子查询中选择多个列

database - 聊天/对话数据库

java - 转换结果 java.lang.NullPointerException 时出错 & 解析数据 org.json.JSONException 时出错 : End of input at character 0 of

python - 日期格式不正确。隐藏密码的方法? Excel、Python、MySQL

php - 使用 $input->all() 而不是 Input::all() Laravel-5

mysql - 关联表以生成列表 (SQL)

java - 使用 JDBC 重复查询数据库或将数据转储到 ArrayList 并在需要某些数据时迭代列表?

php - MySQL INSERT 如果记录不存在

php - Wordpress:wpdb 准备条件变量

php - 为什么 tcpdf 库从循环中输出一条记录?