【问题标题】:Mysql pivot table (concat) misuse (processing time)Mysql数据透视表(concat)误用(处理时间)
【发布时间】:2014-01-20 09:26:27
【问题描述】:

我想旋转下面的示例,我正在使用:

SELECT Person, GROUP_CONCAT( Var ) , GROUP_CONCAT( Val ) 
FROM table
GROUP BY Person

这很好用,但是...每行大约需要 20 秒,我的表有 +/- 2.500.000 条记录:-P (顺便说一句;下表是一个例子,不是实际的)

id person    Var    Val
-------------------------------
1  Bob       Height  185
2  Bob       Weight  74
3  Bob       Age     40
4  Hank      Height  193
5  Hank      Weight  90
6  Hank      Age     45
7  Bert      Height  180
8  Bert      Weight  85
9  Bert      Age     43

PS: 除了一个答案(什么会让你很棒)我还想知道这个例子有什么“错误”(让你更棒)

【问题讨论】:

  • 您真的要对整个表运行查询吗?你有什么条件可以减少结果集?

标签: mysql pivot-table


【解决方案1】:

没什么不好,只是我会这样写

SELECT Person, GROUP_CONCAT(CONCAT(Var, ': ', Val))
FROM table
GROUP BY Person

因为当你把它分成两列时,你不会知道哪个Val属于哪个Var

除此之外,您是否在这些列上定义了索引?如果没有,请尝试查看哪个索引效果最好,为每列单独索引或对 person、var、val 进行复合索引。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2013-09-14
    • 2023-04-08
    • 1970-01-01
    相关资源
    最近更新 更多