gpt4 book ai didi

sql - 加入使用日期字段的最佳方式

转载 作者:行者123 更新时间:2023-12-01 16:38:11 26 4
gpt4 key购买 nike

我知道我在某处读到,使用函数作为连接(例如年份(日期))来对另一个具有年份的表进行连接并不是最好的连接方式。

我基本上有一个表,其中年份字段的值为 2016,另一个表的实际日期为 01/01/2016,我使用年份(日期)进行连接。

创建一个字段是否是一种好的做法,例如,2016 年通常会在一个财务周期中开始,因此创建一个开始日期 01/04/2016 和结束日期 31/03/2016 的字段,并使用这些字段来加入。但想知道在连接方面会是什么样子?或者我应该继续使用我的方法,使用year()函数将01/01/2016转换为年份?

最佳答案

不,不要做任何特别的事情。通过逆向问题就可以轻松解决您的问题。

当前实现的问题是,必须在主表中的每一行的连接表的每一行上执行一个函数,这会产生两个令人讨厌的影响:

  • 速度很慢。您必须执行该函数 n x m 次
  • 不能在连接表的日期时间列上使用索引(如果有的话,也应该有)

但是有一个简单的方法可以避免所有这些麻烦:根据年份值将年份的开始和结束计算为日期时间,并使用它在日期时间介于这两个值之间的情况下连接到另一个表。这将:

  • 每个主表行仅计算一次开始/结束日期
  • 允许在日期时间列上使用索引(如果还没有索引,则应添加索引)

我不太明白你的问题足以使用真实的代码,所以这是伪查询的样子:

select *
from table1
join table2 on table2.datetime
between <calculate start of year from table1.year>
and <calculate end of year from table1.year>

关于sql - 加入使用日期字段的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39395018/

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