当我不需要存储秒数时,有什么好的理由不使用 SMALLDATETIME?



Using SQL Server 2014:

我正在使用一些大型日志表,其中一列是数据类型DateTimeCreateDate

基于CreateDate列的索引很少。

所有的表已经包含了大量的行。

问题#1:是否有任何好的理由不将所有CreateDate列转换为SMALLDATETIME类型?

问题#2:是否存在安全的alter table语句,将现有的DATETIME数据转换为SMALLDATETIME而不会出现任何错误?

问题#3:当我使用ALTER TABLE时,基于CreateDate的现有索引会发生什么?

是,您可以使用小型日期时间数据类型。

处理smalldatetime

Smalldatetime每次都有0秒,没有毫秒。但是要注意,小日期时间会将分钟值四舍五入到最接近的分钟值。

如果您的datetime列包含类似'2016-08-06 11:49:31.667'的值,则

示例。那么小日期时间值将是'2016-08-06 11:50'。它将日期时间四舍五入到最接近的值50分钟,而实际上是49分钟。

我认为修改数据的最好方式

我的建议是用smalldatetime数据类型再创建一个列。并通过将datetime列转换为smalldatetime来更新它。删除datetime列。

索引器更改数据类型时的部分

进入索引器。您可以在此列上创建相同的索引器。据我所知,在Smalldatetime上有Indexer比在datetime上有Indexer要好。因为每列的datetime值的最大值相差毫秒。

我希望这些信息能对你有所帮助。

我真的认为,如果它没有坏,就不要改变它。至少,不要在没有全面调查和计划的情况下改变它。原因:

  1. 可能存在基于您不知道的数据类型的依赖项。如果这是一个成熟的产品,也就是说,它不是在最近几个月内创建的,那么你可能不知道该栏的所有内容,或者如果更改数据类型可能会中断的列。

  2. 数据保存。是的,SmallDateTime的大小是DateTime的一半,但这取决于您有多少记录和表的大小,这对您来说可能不是那么大的问题。是的,更小的数据量可能会让事情变得更快。

相关内容

  • 没有找到相关文章

最新更新