【问题标题】:group concat from subquery very slow来自子查询的组连接非常慢
【发布时间】:2015-03-29 22:08:42
【问题描述】:

来自这里sql group_concat and subquery

我设法通过“子查询”来“解决”问题:

SELECT
GROUP_CONCAT(name,',',results separator '#')
as finalresult 
FROM
(

    select t.name as name, group_concat(distinct r.idResult separator '-') as results
    from threshold t
    left join threshold_results r on r.idThreshold = t.idThreshold 
    group by t.idThreshold, t.name

) final

但是当有很多记录时它太慢了,没有子查询,初始解决方案执行得很好。有什么想法吗?

谢谢!

【问题讨论】:

  • 只运行内部查询并在客户端代码中进行最终连接不是更好吗?外部查询不运行任何特定于数据库的处理,它只是连接一些字符串,这可以在客户端代码中以更好的结果(关于速度)来实现。
  • 我认为在数据库中而不是在客户端代码中执行此操作更快。
  • 如果你自己运行子查询,它的表现如何?您看到了什么样的性能差异(以秒为单位)?
  • 子查询时长小于1秒,最终查询约14秒

标签: mysql join group-concat


【解决方案1】:

在 r.idThreshold, t.name 上添加索引

【讨论】:

  • 它已经有索引,我认为问题是主要的 GROUP_CONCAT 如果我添加更多字段它会变得更慢,也许我将不得不尝试从客户端代码中做到这一点
猜你喜欢
  • 1970-01-01
  • 2022-01-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-07
  • 1970-01-01
  • 2012-06-30
  • 2015-04-19
  • 1970-01-01
相关资源
最近更新 更多