gpt4 book ai didi

mysql - 按每个房间最近的聊天对聊天室进行排序的最佳方式是什么

转载 作者:行者123 更新时间:2023-11-29 09:41:53 24 4
gpt4 key购买 nike

我有一个 chat_hist 表,其结构如下:

|chat_id (auto increment)|room_id(int)|sender_id(int)|messege(text)|timestamp|

那么根据最近的聊天(timestamp)列出chat_room(room_id)的最佳方式(性能方面)是什么)来自每个 chat_room(就像 Whatsapp 群组上的列表)?

我问这个问题是因为我不是数据库专家,我想每个房间中的聊天消息都会增加每个用户刷新最新列表时性能的变化

我现在用的是这个:

select room_id from (
select room_id,max(time_stamp) as ts from chat_hist where room_id in (
select distinct room_id from chat_room
)
group by room_id
) as A order by ts desc

其中表 chat_room 是所有 room_id 所在的位置。

那么最好的方法是什么......

提前谢谢

最佳答案

您的 chat_id 自动递增。所以想必它会随着时间戳的增加而增加。

因此,您可以像这样在 chat_hist 中找到每个 room_id 的最新行

            SELECT room_id, MAX(chat_id) chat_id
FROM chat_hist
GROUP BY room_id

如果您在 room_id 上有索引,则此子查询将非常快;它使用所谓的松散索引扫描。

然后,您可以使用它作为子查询来获取每个房间的最新聊天详细信息:

SELECT c.*
FROM chat_hist c
JOIN (
SELECT room_id, MAX(chat_id) chat_id
FROM chat_hist
GROUP BY room_id

) latest ON c.chat_id = latest.chat_id

关于mysql - 按每个房间最近的聊天对聊天室进行排序的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56450406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com