首页 > 解决方案 > 选择在联合中花费大量时间按日期顺序排序?

问题描述

我有一个选择来获取警报。

select 'comments' prefix, c.foto, c.data as data, c.user, concat(k.user, ' comments your post') as logs from comentarios c 
inner join posts p on c.foto = p.id 
inner join cadastro k on c.user = k.id 
where p.user = 1 and p.user <> c.user and c.delete = 0

union all

select 'like' prefix, l.post, l.data as data, l.user, concat(k.user, ' liked your post') as logs from likes l 
inner join posts p on l.post = p.id 
inner join cadastro k on l.user = k.id 
where p.user = 1 and l.user <> p.user

order by data desc
limit 5

问题是如果我以这种方式运行 select 将需要 2.4871 秒。

如果我删除select 'like'...= 0.0024,但如果我将这个选择分开运行,它只需要 0.010,而没有按数据 desc 的顺序。

任何想法为什么?我不知道问题是联合还是顺序……它们都被很好地索引了。

在此处输入图像描述

标签: mysqlunion-all

解决方案


推荐阅读