Sql server tsql datetime与int查询性能

Sql server tsql datetime与int查询性能,sql-server,tsql,datetime,Sql Server,Tsql,Datetime,出于性能目的,将日期时间存储为int或bigint是否有意义。想知道索引/查询整型列是否比datetime列产生更好的性能 如果存在性能差异,是否有人知道它是实质性的,还是相对可忽略的。如果您从客户端获取时间并将其存储在不同格式的数据库中 在SQL Server中,只能为datetime设置一个排序规则,因此理想的做法是将值存储为UNIX时间格式的bigint(即自1970年1月1日起的秒数) 如果时间是相对的,并且仅在SQL server所在的计算机上生成,则日期时间是有意义的,但应将其存储在

出于性能目的,将日期时间存储为int或bigint是否有意义。想知道索引/查询整型列是否比datetime列产生更好的性能


如果存在性能差异,是否有人知道它是实质性的,还是相对可忽略的。

如果您从客户端获取时间并将其存储在不同格式的数据库中

在SQL Server中,只能为datetime设置一个排序规则,因此理想的做法是将值存储为
UNIX时间格式的bigint(即自1970年1月1日起的秒数)

如果时间是相对的,并且仅在SQL server所在的计算机上生成,则日期时间是有意义的,但应将其存储在
UTC
中,以便很容易转换为其他时区进行报告或显示


出于显示目的,从Unix时间到日期时间的转换不会对性能造成太大影响。

使用。使用
int
数据类型实现的任何存储好处都将被显示、聚合或比较值所需的转换和解析代码抵消。

您是否建议为逻辑处理(如使用dateadd()等)保留datetime列?逻辑处理可以在存储过程或视图中完成,因此,只存储int是可以的,-1表示建议将日期/时间值存储为
bigint
,+1表示存储为UTC@BryanEargle,如果客户以不同的时间格式发送时间,假设伦敦客户发送给我们,将需要在服务器端进行转换以表示当前SQL Server日期-时间排序规则。不仅否定,实际上更糟。执行这种类型的动态强制转换/转换将破坏它们的性能。如果同时存在datetime字段和int smartdate键,会怎么样?为什么要添加另一个不需要的列?你想解决什么问题?整数的意义是什么?连接在datetime数据类型上不会比int慢。请记住,内部datetime存储为数字,因此可以快速检索。是的,这就是问题的本质,如果你说的是真的,连接和查询datetime与int可以忽略不计,那么我想我们已经找到了答案,这就是保持日期时间。不要做出非标准的设计决策来处理不存在的性能问题。这被称为过早优化,几乎总是导致性能下降。我同意你的意见,明智的建议。在这种情况下,我们正在建立一个数据仓库,我们经常根据日期进行查询。因此DBA正在考虑使用bigint列和date列,因为int可能有助于提高性能。