mysql group 查询的替代_mysql group_concat替代或多行作为列

在我开始提问之前,我简要介绍一下问题所在:

我有一个存储大约400万个'参数'值的表。这些值具有id,模拟ID和参数id。

参数id映射到一个参数表,它基本上只是将id映射到一个文本,如参数x,y等的表示等。

模拟表有大约170k个条目,用于将参数值映射到作业。

还有一个分数表存储每个模拟的分数,模拟具有不同的分数,例如,一个可能有一个分数,另一个可能有三个。得分表有一个simulation_id列用于选择它。

每份工作都有自己的目标。

目前我试图选择所有参数为'x'且参数id为17的参数_值并获取其得分。选择的变量会发生变化,但是只有这些变量才能真正感兴趣。

目前我正在使用此声明:

SELECT simulation.id , value , name , ( SELECT GROUP_CONCAT(score) FROM score WHERE score.simulation_id = simulation.id ) AS score FROM simulation,parameter_value,parameter WHERE simulation.id=parameter_value.simulation_id AND simulation.job_id = 17 AND parameter_value.parameter_id=parameter.id AND parameter.name = "$x1"

除了需要大约3秒钟才执行之外,这个工作很有用。这可以更快地完成吗?

我不知道在此之前是否会更快地进行查询,以便预先计算我正在搜索和执行WHERE parameter_id IN(1,2,3,4)等的参数_。

但我觉得SQL会优化这个吗?

我已经尽可能创建了索引,但速度不能超过2.7秒。

所以我的问题是:

我应该预先计算一些值并避免连接,

除了group_concat还有其他方法可以获得分数

我可以对此做出任何其他优化吗?

我还应该补充一点,分数必须在同一行或至少返回排序,以便我可以轻松地从结果集中读取它们。

谢谢,

刘易斯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值