3 つのテーブル (例 a、b、c) があり、さまざまな項目 (コメント、いいねなど) のアクティビティと、各アクティビティの時間を示します。私は基本的に、最新のアクティビティを最初に表示する一種のニュース フィードを作成しようとしています。3 つのテーブルすべてに対して UNION ALL を作成して、すべてのアクティビティをグループ化し、次に GROUP BY を作成して、同じアイテムのアクティビティが 2 回表示されないようにし、時間 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