我需要
SELECT MAX(created_at) FROM someTable
每当我的应用程序启动时。该表是巨大的(数十亿行)。created_at
我为快速查询而创建的索引使用了数 GB。有没有办法只在最高元素上创建某种部分索引?或者有什么方法可以减少占用空间?还是完全替代方法?我需要在此列上查询的只是最大元素。
我需要
SELECT MAX(created_at) FROM someTable
每当我的应用程序启动时。该表是巨大的(数十亿行)。created_at
我为快速查询而创建的索引使用了数 GB。有没有办法只在最高元素上创建某种部分索引?或者有什么方法可以减少占用空间?还是完全替代方法?我需要在此列上查询的只是最大元素。
最好是采用另一种方法,而不是一直查询大表,如果这是索引的唯一目的。
创建仅包含单个时间戳的第二个表,并在
sometable
新行到达或更新旧行时在该小表上定义一个触发器。created_at
只有当您从不删除具有最新时间戳的行或从不更新created_at
到较早的时间戳时,这种方法才会有效。如果您有能力让这些信息不总是最新的,您可以创建一个物化视图:
你只需要运行(应该非常快):
这个对象占用的空间很小。但是,每次您需要更新此物化视图时,都需要刷新它,并且在没有索引的情况下,它需要扫描整个表: