gpt4 book ai didi

mysql - 优化 GROUP_CONCAT 查询

转载 作者:行者123 更新时间:2023-11-28 23:31:11 27 4
gpt4 key购买 nike

我有一个包含三个字段的 messages

消息

  • 身份信息
  • 正文
  • 文件

files字段可以是01,当消息时设置为0没有附加文件1

然后我有一个包含三个字段的messages_files

消息文件

  • 编号

  • 身份信息

  • 文件

    id 只是一个主要的自动增量键,idmessage 是消息的 id,file 是文件的名称。

我想列出消息及其文件(如果有的话)。以下查询工作正常:

SELECT m.*, GROUP_CONCAT(mf.file SEPARATOR ',') AS fileList 
FROM messages m
LEFT JOIN messages_files mf ON mf.idmessage = m.idmessage
GROUP BY m.idmessage;

我的问题是:由于当消息没有文件时表 messages 中的 files 字段设置为 0,我可以“跳过”那些行上的 JOIN ,从而使查询更快?

谢谢!

编辑:message_filesidmessage 字段上有一个索引(它是一个外键)。

最佳答案

使用相关子查询可能会更快:

SELECT m.*,
(SELECT GROUP_CONCAT(mf.file SEPARATOR ',')
FROM messages_files mf
WHERE mf.idmessage = m.idmessage
) as fileList
FROM messages m;

这可以利用 messages_files(idmessage, file) 上的索引。

关于mysql - 优化 GROUP_CONCAT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37299387/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com