smc*_*hae 1 mysql performance query-performance
据我了解,or应尽可能避免使用查询中的经验法则。
我有两个具有一对多关系的表。
我已经加入了两个如下表。
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;
Run Code Online (Sandbox Code Playgroud)
使用是否GROUP_CONCAT会像or在 MySQL 中一样影响性能?如果是这样,连接这些表的有效方法是什么?
任何建议或建议将不胜感激。谢谢你。
学习一些模糊的“规则”,比如“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
解释输出看起来有点像一门黑暗的艺术,但你会发现它值得付出努力。
| 归档时间: |
|
| 查看次数: |
3556 次 |
| 最近记录: |