1
我有一个messages
表三个字段优化GROUP_CONCAT查询
消息
- idmessage
- 文本
- 文件
的files
字段可以0
或1
,它的设置为0
时message does not have files attached
和1
当它does
。
然后,我有一个messages_files
表三个字段
messages_files
- ID
idmessage
文件
ID就是主
autoincremental
密钥,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;
我的问题是:由于文件表场消息设置为0时,该消息没有文件,我可以“跳过” JOIN的那些行,从而使查询更快?
谢谢!
编辑:message_files对idmessage场(这是一个外键)的索引。
在此查询上使用* EXPLAIN *会在主查询中返回一个ALL类型,并且不使用任何键。 – Koas