首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GROUP_CONCAT在Mysql上的应用

问GROUP_CONCAT在Mysql上的应用
EN

Database Administration用户
提问于 2018-01-25 03:45:26
回答 2查看 4.8K关注 0票数 1

据我所知,在查询中应尽可能避免使用or。

我有两张桌子有一对多的关系。

我加入了两张桌子如下所示。

代码语言:javascript
复制
SELECT A.*, group_concat(B.info separator ','), group_concat(B.info2 separator ',')
FROM A
JOIN B
ON A.id = B.a_id
GROUP BY A.id;

使用GROUP_CONCAT是否会像or在MySQL中那样影响性能?如果是这样,那么加入这些表的有效方法是什么呢?

如有任何建议或建议,将不胜感激。谢谢。

EN

回答 2

Database Administration用户

回答已采纳

发布于 2018-01-25 03:47:50

因此,GROUP_CONCAT对于涉及字符串的MySQL来说是一项额外的工作,因此您应该预期会有一些慢下来,但请放心,它不会影响MySQL的性能。

要连接这些表,可以使用MySQL拥有的那些联接命令。比如内部连接,完全连接,等等。看看这个https://www.tutorialspoint.com/mysql/mysql-using-joins.htm。

票数 1
EN

Database Administration用户

发布于 2018-01-25 12:44:59

学习一些模糊的“规则”(比如“应该避免OR”或"group_concat是慢的“)通常并不能很好地满足您的兴趣。

这两种说法都不正确,它们只有真理的基本要素。

使用正确的能力来完成你的目标,同时理解有时你的兴趣是通过修改你的目的来满足你的内在限制。

如果优化器没有有效的方法来适应分组,那么使用GROUP BY (不仅仅是GROUP_CONCAT)会导致性能下降。但这与是否使用GROUP BY无关。如果你需要它,那你当然应该用它..。但是,与没有索引的扫描磁盘和排序相比,操纵字符串是一种蛋糕式的方式,连接所消耗的CPU周期就在噪声地板附近。

这里的目的是了解优化器如何看待您的查询,以及它计划如何解决它。如果您想要获得良好的性能,使用EXPLAIN SELECT ...来验证服务器是否做出了明智的选择(并且您已经编写了合理的查询)对您来说应该是第二天性。

https://dev.mysql.com/doc/refman/5.7/en/explain.html#explain-execution-plan

解释输出似乎有点黑暗的艺术,但你会发现它是值得的努力。

票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/196190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档