我需要这里数据库人员的一些建议。如果我有这个数据库表:
EVENT
Id
Name
StartDateTime
EndDateTime
是否可以在表中包含一个包含事件持续时间(以秒为单位)的摘要列(StartDateTime 和 EndDateTime 之间的秒数):
EVENT
Id
Name
StartDateTime
EndDateTime
DurationInSeconds <---
我知道这需要额外的存储空间,但随着表变得非常大(数千万行),在运行时计算这个持续时间将变得相当昂贵。
我想遵循“最佳实践”,但也不想因为没有“廉价”格式(性能方面)而使数据变得不可用。
你会做什么?
如果重要的话,我正在使用 SQL Server 2014。
最佳答案
以下是包含示例信息的计算列示例。
create table MyEvents
(
ID int
, Name varchar(20)
, StartDateTime datetime
, EndDateTime datetime
, DurationInSeconds as datediff(second, StartDateTime, EndDateTime) PERSISTED
)
insert MyEvents
select 1
, 'Event 1'
, getdate()
, dateadd(minute, 3, getdate())
select *
from MyEvents
关于sql-server - 在数据库表中使用汇总列是否常见或良好的形式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43504894/