最快的PostgreSQL字段长度查询



如果我需要在postgresql中找到存储为数字(即可变长度数字(的几个字段的最大长度,这样我的团队就可以构建一个固定宽度的文件布局,而长度不在元数据中,有没有比更快的方法来获取信息

select field 
from table 
where field is not null 
order by field desc 
limit 1;

select max(field) 
from table;

这些字段所在的表有数千万行,因此这些查询需要相当长的时间。我是一个不错的postgresql用户,但优化效率从来都不是我的强项——我通常不处理这么大的数据集。任何帮助都将不胜感激,即使这是一个愚蠢的问题!

您的查询看起来不错。第一个查询中不需要where子句,可以写成:

select myfield from mytable order by myfield desc nulls last limit 1;

然后,对于性能,请考虑以下指标:

create index myidx on mytable(myfield desc nulls last);

实际上,Postgres应该能够向后读取索引,所以这应该同样好:

create index myidx on mytable(myfield);

有了这些索引中的任何一个,数据库应该能够通过只查看索引来执行整个查询,这应该非常高效。

最新更新