SELECT * FROM table WHERE from_user=? AND to_user=? ORDER BY created_at DESC
created_at
是一个日期时间列。
根据我之前的问题(这里(,我了解到您不需要创建降序索引。
如果我有数十亿条记录,这个索引可以吗?(请注意,我没有为 created_at指定 desc 索引(
>> from_user_id, to_user_id, created_at
IMO有一个关于from_user_id, to_user_id, created_at
的索引不会对你有多大帮助。
我认为您没有多少记录具有相同的from_user_id, to_user_id, created_at
值。(日期时间以毫秒为单位!
如果我的假设是正确的,那么在基数如此之低的索引中,有效性将降低为线性搜索加上浪费存储。
我建议在from_user_id, to_user_id
上有一个索引,符合您的 where 标准,索引将在订购前应用。
在任何情况下,当具有这些索引时,您都可以看到查询执行计划以查看查询开销。
(索引机制概述很有趣(