【发布时间】:2017-09-14 17:15:22
【问题描述】:
我有一个表格,我需要获取其中一列的最后一个单元格。不过这张桌子很大,我想尽快完成。 诀窍是最新的行(最大的时间戳)被添加到表的底部。所以我真的只需要找出获得最后一行的最快方法。我想在不创建索引或永久修改表或创建表的情况下执行此操作(编辑:我愿意制作视图)
我试过这个:
SELECT my_column FROM my_schema.my_table ORDER by timestamp DESC NULLS LAST LIMIT 1
但是大桌子真的很慢
所以我尝试了这个:
SELECT my_column FROM my_schema.my_table WHERE timestamp=(select max(timestamp) from my_schema.my_table)
感觉更慢了。
有什么想法吗?
【问题讨论】:
-
您需要该列的索引
-
对于我的一般文化,是否可以设置一个“指向”最新行的部分索引?这样的索引几乎不会占用任何空间,而且更新它是不花钱的。 PostgreSQL(或任何其他 RDBMS)是否处理这样的功能?
-
在该列上创建索引
-
my_column上的索引没有意义,请在时间戳列上创建索引。 -
一张桌子没有底部,也没有顶部。这只是一个数据泡沫。如果您需要订单,则必须对数据进行排序。总是。如果你不这样做,你可能会很幸运,但不要指望它。
标签: sql database postgresql datatable row