工资表结构-SQL

时间:2018-11-29 12:32:08

标签: sql-server indexing sql-tuning

我在SQL Server 2012中实现了工资核算流程。 该表有365列,以便存储不同PayHead部分每天的详细信息。

  

PayHead包括(基本,人力资源,扣除额,ESIC,税金,PF等。)

将这365个列全部合并为一个“日期”列,然后需要处理查询是一个好主意吗?

在上述情况下需要不同的建议来对齐表,以便我可以对其进行一些改进操作(索引,分区等)。

1 个答案:

答案 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