小编sca*_*ace的帖子

通过 id 获取 MySQL 中最旧行的最有效方法

我有2张桌子:

conversation

CREATE TABLE `conversation` (
  `conversation_id` int(11) NOT NULL,
  `title` varchar(200) COLLATE utf16_czech_ci NOT NULL,
  `beginning_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `user_id` int(11) DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)

message

CREATE TABLE `message` (
  `message_id` int(11) NOT NULL,
  `text` varchar(5000) COLLATE utf16_czech_ci NOT NULL,
  `add_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `is_seen` int(11) NOT NULL,
  `conversation_id` int(11) NOT NULL,
  `user_id` int(11) DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)

当我创建一个新对话时,我还需要创建一个新消息(对话的开始消息)。稍后,此对话可能有数千条消息。但是在某些情况下我需要做的是,我需要conversation_id从数据库中与某个人进行对话,并获取此对话的最旧消息(对话的开始消息)。获取此消息的最有效方法是什么?

我做了这样的事情,但是当对话有 maaany 消息时,排序可能会减慢它的速度:

SELECT * FROM message WHERE conversation_id=some_id ORDER …

mysql

3
推荐指数
1
解决办法
2059
查看次数

标签 统计

mysql ×1