我在SQL Server 2012中实现了工资核算流程。 该表有365列,以便存储不同PayHead部分每天的详细信息。
PayHead包括(基本,人力资源,扣除额,ESIC,税金,PF等。)
将这365个列全部合并为一个“日期”列,然后需要处理查询是一个好主意吗?
在上述情况下需要不同的建议来对齐表,以便我可以对其进行一些改进操作(索引,分区等)。
答案 0 :(得分:1)
否,创建365列不是一个好主意。 您需要规范化数据。 This article shows what you want to do and the way what to do. 因此,用列创建一个表
ID
列有一个密钥Date
的存储日期PayHead
列您可以创建以下非聚集索引以按列Date
查找:
CREATE NONCLUSTERED INDEX [IX_Payroll_Date_PayHead]
ON dbo.Payroll
(Date)
INCLUDE (PayHead)
GO
您将拥有约365行的表,最好通过具有非聚集索引Date
的{{1}}列来查找。
此查询的查询计划为IX_Payroll_Date_PayHead
:
index seek