我在SQL Server中创建表格相当新 - 特别是对于计算列 - 我希望确保我不会创建一个非常低效的数据库。
作为我想要完成的事情的简化示例,假设我有以下表定义:
CREATE TABLE [dbo].[MyTable](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](50) NOT NULL,
[Strategy] [varchar](30) NOT NULL,
[Strategy_Variation] [int] NOT NULL
)
简化数据如下:
ID: Name: Strategy: Strategy_Variation:
1 Name1 Strat1 1
2 Name2 Strat2 1
3 Name3 Strat2 2
4 Name4 Strat1 2
5 Name5 Strat1 3
基本上,我的问题是关于Strategy_Variation
列。我希望发生的事情是,对于每个Strategy
,根据输入到表中的顺序递增变化(使用ID
递增标识索引作为排序条目的方式)。或者,通过SQL:
COUNT(Strategy) over(partition by Strategy order by ID)
我的问题是,将此作为我的表定义中的计算列是否是一个好主意,或者我只是将这种列完全保留并将其添加到视图中,比如说,保持这个表更精简。
总的来说,我是这方面的新手,并且非常喜欢关于经验丰富的数据库管理员如何处理这种情况的任何指示。
谢谢!