如何加快max()查询

如何加快max()查询,第1张

如何加快max()查询

在旧版本的PostgreSQL中,这是一个已知的问题-
但它似乎已由8.4解决。实际上,针对8.0的文档有一些警告,但针对8.1的文档则没有。

因此,至少由于这个原因,您不需要升级主要版本。但是,您应该升级到当前的8.4系列版本8.4.16,因为您缺少数 的错误修复和调整价值。

真正的问题在于,您正在使用

max
表达式,而不是简单的值,并且该表达式没有功能索引。

您可以尝试在表达式上创建索引

kuupaev||kellaaeg
…但是我怀疑您有数据模型问题,并且通过修复数据模型还有更好的解决方案。

看起来

kuupaev
是kuup盲ev或日期,而kellaaeg可能是时间。如果是这样:永远不要使用concatenation(
||
)运算符组合日期和时间;使用间隔加法,例如
kuupaev+kellaaeg
。取而代之的是,
char
您应该使用数据类型
time
interval
使用的
CHECK
约束
kellaaeg
,具体取决于数据类型的含义以及是否限制为24小时。或者,更好的是,使用单个类型的字段
timestamp
(对于本地时间)或
timestampwith time zone
(对于全球时间)来存储组合的日期和时间。

如果你这样做,你可以创建组合的列一个简单的索引取代了

kellaaeg
,并
kuupaev
和使用,对于
min
max
等等。如果你只需要日期部分或只是一些事情的时间部分,使用
date_trunc
extract
date_part
功能;

您仍然应该计划升级到9.2。从8.4升级到9.2的升级路径并不是很粗糙,您实际上只需要注意

standard_conforming_strings
默认情况下on的设置以及
bytea_output
from
escape
到to的更改
hex
。在过渡和移植过程中,两者都可以设置回8.4的默认值。8.4将不再受支持。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5675174.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存