我有 3 个表格(例如 a、b、c),它们指示不同项目的活动(例如评论、喜欢等)以及每个活动的时间。我试图基本上做一种新闻提要,首先显示最近的活动。我为所有三个表构建了一个 UNION ALL 以将所有活动组合在一起,然后构建一个 GROUP BY 以确保相同项目的活动不会显示两次并按时间 DESC 排序。此函数使用无限滚动,因此查询也必须能够适当地移动。
我想知道是否有任何方法可以优化这一点(每个表大约 500-900K 并且还在增长)。截断的代码如下所示。
SELECT time,item_id FROM (
SELECT a.time AS time, a.item_id FROM a
UNION ALL
SELECT b.time AS time, b.item_id FROM b
UNION ALL
SELECT c.time AS time, c.item_id FROM c
) temp
GROUP BY item_id
ORDER BY time DESC
LIMIT 10