数据库多表联接查询group_concat问题
2015-10-21 来自:Calvin 0 人回应

先展示表结构
article文章表
id 主键
typeid 栏目id
content 内容
arcrank >-1时文章有效
...
tag标签表
id 标签主键
aid 文章id
arcrank >-1时标签有效
tag 标签
...
addcontent文章附加表
id 附加表id
aid 文章id
addmsg
...
sql语句:

SELECT ar.*,group_concat(`tag` ,'').*,add.* 
FROM article AS ar
LEFT JOIN addcontent AS add ON(ar.id=add.add)
LEFT JOIN tag ON(ar.id=tag.aid)
WHERE ar.arcrank>-1 AND tag.arcrank>-1 AND ar.id=1000;

这条语句在文章没有文章标签的时候,居然addmsg获取的信息也是空的。希望能帮忙解读一下这个原因,数据库在执行这条语句的顺序。

SELECT `ar`.*,`add`.*,group_concat(`tag` ,'') AS `tag` 
FROM `article` AS `ar`
LEFT JOIN addcontent AS `add` ON(`add`.`aid`=`ar`.`id`)
LEFT JOIN tag ON(`ar`.`id`=`tag`.`aid`)
WHERE `ar`.`arcrank`>-1 AND `ar`.`typeid` IN (19,18,17,16,15,14,13,40,42)
GROUP BY `ar`.`id`
LIMIT 0,10

还有帮忙解释一下,在tag表中aid没有添加为索引时,这条语句的效率非常的底,请问除了多条语句查询外,还有没有其它的方法提高效率,或者告诉我为什么会慢,是因为group_concat()这个函数执行的很慢吗?

还没有人回应!

您的回应

你还未登陆,不能回应!登陆