栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何加快max()查询

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何加快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将不再受支持。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/669925.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号