SQL Серверная схема проектирования каждый день значение - PullRequest
0 голосов
/ 02 апреля 2020

Я не уверен, каков наилучший способ оформления моего стола. Я использую базу данных SQL Server 2016.

Я должен сохранить для каждого UserId, Type и Date одно значение. Поскольку существует 200 пользователей и 10 типов, в таблице должно храниться много данных с течением времени.

Моя скорость sh должна обеспечивать наилучшую производительность для запроса:

SELECT Value 
FROM mytable 
WHERE UserId = XXX AND Date = XXX

И сохраните как можно больше табличного хранилища.

Итак, у меня в голове 2 возможных варианта:

Вертикальный

UserId | TypeId | Date | Value

Pro:

  • Очень легко выбрать
  • Допустимый формат даты

Минусы:

  • Очень большой объем данных
  • Запрос становится медленным при большом количестве данных. Даже с индексом

Горизонтальный

id (bigint) состоит из 3 частей.

Например, для UserId = 7, Type = 5 и дата 2020-04-02, id будет 2020040200007005

id | UserId | TypeId | Year (int) | Month (Int) | Day1 | Day2 | .... | Day31

Pro:

  • Запрос по id быстрый
  • Требуется меньше памяти вертикальное использование

Минусы:

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

Так что я не уверен, какой из них подходит лучше всего.

Может быть, у вас есть идея получше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...