You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按日期取最新行:建索引还是排序整张表?

交易表获取最新100条记录的性能优化方案

两种方案的优劣分析

方案一:全表排序后取前100行

这种做法既不合理,也不属于良好的SQL实践。如果不对Date列加索引,执行ORDER BY Date DESC LIMIT 100时,数据库需要先扫描整张表的所有数据,再对全部记录做排序操作,最后才能取出前100条。表的数据量越大,排序的开销就越高,资源占用会直线上升,完全达不到“开销极低”的要求。

方案二:在Date列创建索引

这才是正确的优化方向。给Date列创建降序索引(匹配你获取最新记录的需求),示例语句:

CREATE INDEX idx_transactions_date_desc ON transactions(Date DESC);

创建索引后,数据库可以直接通过索引快速定位到最新的100条记录,不需要全表扫描和全表排序,查询的性能开销极低,而且不管表的数据量增长到多大,这个查询的性能都能保持稳定。

后续执行查询时,直接使用:

SELECT * FROM transactions ORDER BY Date DESC LIMIT 100;

数据库会自动利用已创建的索引高效获取数据,完全满足你的需求。

内容的提问来源于stack exchange,提问作者rex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:15:30