Структура таблицы заработной платы - SQL - PullRequest
0 голосов
/ 29 ноября 2018

В SQL Server 2012 реализован процесс начисления заработной платы. Таблица содержит 365 столбцов для хранения сведений о каждом дне для различных разделов PayHead.

В состав PayHead входят (Basic, HR, Deduction, ESIC,Tax, PF и т. Д.)

Является ли хорошей идеей объединить все эти 365 столбцов в один столбец Date и затем обработать запрос?.

Нужны разные предложенияв приведенном выше сценарии выровняйте таблицу так, чтобы я мог выполнять над ней некоторые операции улучшения (индексирование, разбиение и т. д.).

1 Ответ

0 голосов
/ 29 ноября 2018

Нет, не рекомендуется создавать 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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...