使用连接表选择组 concat 或将数据移动到一种列文本数据类型

Posted

技术标签:

【中文标题】使用连接表选择组 concat 或将数据移动到一种列文本数据类型【英文标题】:select group concat with join tables or move data to one column text datatype 【发布时间】:2021-01-16 05:19:34 【问题描述】:

我有 Author 和 Books 表。

我目前选择数据的方法是我 LEFT JOIN 书籍表到 Author 表并使用 GROUP_CONCAT 来获取书籍列表。

随着书籍数量的增加,查询似乎变慢了。

我正在考虑为具有文本数据类型的书籍列表添加另一列,并将所有书籍存储为文本。所以我只需要从一张表中使用一个 SELECT。

如果我使用一个大文本列而不是 group_concat,查询会更快更好吗?

【问题讨论】:

考虑处理应用代码中数据显示的问题。 向我们展示查询和SHOW CREATE TABLE。我不认为GROUP_CONCAT是反派,但我需要查看更多细节。 【参考方案1】:

如果我使用一个大文本列,查询会更快更好吗 而不是 group_concat?

显然查询会运行得更快。

但是

管理书籍列表会产生开销,因为对于books 表中的每个 DML,您必须更新 author 表中的书籍列表。

这不是一个好的做法。相反,您可以专注于通过索引或任何其他性能技术使您的 LEFT JOIN 查询更快。

【讨论】:

这对我来说并不明显 :-(

以上是关于使用连接表选择组 concat 或将数据移动到一种列文本数据类型的主要内容,如果未能解决你的问题,请参考以下文章

将数据库一个表的两列数据合并且去重

oracle 怎么将查询到一列的数据 合并成一个字符串返回来 用“,”分割 如(张三,李思,。。。。)

如何在多个 JOIN 上使用 GROUP_CONCAT

MySQL GROUP_CONCAT 不包括组值

MySQL 组连接行分隔符

将 jenkins 构建文件(WAR)复制到一组服务器