我有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 ×1