首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从理论上讲,这会更快吗?

从理论上讲,这会更快吗?
EN

Stack Overflow用户
提问于 2012-01-23 01:17:20
回答 1查看 61关注 0票数 1

我有一个简单的模式,其中用户相互发送消息。

代码语言:javascript
运行
复制
id
sender_id
receiver_id
message
created_at

如果我想检索两个用户之间的消息(例如,id:3和id:7 ),我必须使用如下查询:

代码语言:javascript
运行
复制
SELECT * FROM messages 
WHERE (sender_id = 3 AND receiver_id = 7) OR (sender_id = 7 AND receiver_id = 3) 
ORDER BY created_at
LIMIT 20

我会有综合指数: sender_id,receiver_id

例如,如果我创建了一个名为"signature“的额外列,我将在其中按短划线分隔的大小顺序存储发送者和接收者的两个if。例如: 3-7或2356-4566、123-435等,并且仅对该varchar字段进行索引。从理论上讲,查询速度会更快吗?如果我像这样检索它:

代码语言:javascript
运行
复制
SELECT * FROM messages 
WHERE signature = '3-7' 
ORDER BY created_at
LIMIT 20
EN

回答 1

Stack Overflow用户

发布于 2012-01-23 01:25:28

代码语言:javascript
运行
复制
SELECT * FROM messages 
WHERE sender_id IN (3,7)
AND receiver_id IN (3,7)
AND receiver_id <> sender_id 
ORDER BY created_at
LIMIT 20
    ;

IMHO很有可能(略微)更快。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8962975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档