Структура таблицы заработной платы - SQL
У меня есть процесс начисления заработной платы, реализованный в SQL Server 2012. Таблица с 365 столбцами для хранения сведений о каждом дне для различных разделов PayHead.
PayHead включает в себя (Basic,HR,Deduction,ESIC,Tax,PF и т. Д.)
Это хорошая идея сделать все эти 365 столбцов в один столбец Дата, а затем необходимо обработать запрос?
Нужны разные предложения по приведенному выше сценарию, чтобы выровнять таблицу так, чтобы я мог выполнить некоторые операции по ее улучшению (индексирование, разбиение и т. Д.).
1 ответ
Нет, создавать 365 столбцов не очень хорошая идея. Вам необходимо нормализовать ваши данные. Эта статья показывает, что вы хотите сделать и как это сделать. Так что создайте одну таблицу со столбцами
- колонка
ID
иметь ключ - колонка
Date
где вы будете хранить день - колонка
PayHead
И вы можете создать следующий некластеризованный индекс, чтобы найти по столбцу Date
:
CREATE NONCLUSTERED INDEX [IX_Payroll_Date_PayHead]
ON dbo.Payroll
(Date)
INCLUDE (PayHead)
GO
И у вас будет таблица с примерно 365 строками, которую хорошо найти Date
столбец с некластеризованным индексом IX_Payroll_Date_PayHead
,
Этот запрос будет иметь план запроса с index seek
:
SELECT
Date
, PayHead
FROM Payroll
WHERE DATE = '2018-29-11'