gpt4 book ai didi

sql - 使用整数值的日期算术

转载 作者:行者123 更新时间:2023-11-29 12:06:53 26 4
gpt4 key购买 nike

问题

字符串连接正在减慢查询速度:

date(extract(YEAR FROM m.taken)||'-1-1') d1,
date(extract(YEAR FROM m.taken)||'-1-31') d2

这在代码中实现为字符串的一部分,紧随其后(其中 p_ 变量是整数,由最终用户输入):

date(extract(YEAR FROM m.taken)||''-'||p_month1||'-'||p_day1||''') d1,
date(extract(YEAR FROM m.taken)||''-'||p_month2||'-'||p_day2||''') d2

查询的这一部分在包含日期的情况下运行 3.2 秒,在没有日期的情况下运行 1.5 秒,这让我相信还有足够的改进空间。

查询的总运行时间不到 10 秒;我希望将整个查询缩短到大约 2 或 3 秒。硬件升级已经发生。 ;-)

版本

PostgreSQL 8.4.4。

问题

创建日期的更好方法是什么(大概没有串联)?

更新

这看起来很有希望:PGTYPESdate_mdyjul

非常感谢!

最佳答案

遗憾的是,我认为没有其他方法可以在不连接文本的情况下构建日期。

是的,坦率地说,我不喜欢 Postgresql 在这里使用的方法。似乎大多数日期操作必须通过将日期字段提取为整数,将它们转换为文本,将它们附加到更多文本以创建日期的文本表示,然后告诉 postgres 将该文本解析为日期来进行......这闻起来对我来说不好,我本能地认为通过解析字符串来构建日期应该只通过文本输入来完成。但是,我认为,postgresql 将数据类型处理与其文本表示联系得太紧密。因此,例如,如果我想从三个整数值 (D、M、Y) 构建一个日期,我必须(如果我没记错的话)构建一个字符串并让 PG 解析它。我觉得这样做很不干净......

撇开咆哮不谈,我怀疑这会大大降低你的表现。

关于sql - 使用整数值的日期算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com