Разработка ключа и индекса для эффективной таблицы дат - PullRequest
0 голосов
/ 26 марта 2019

Я довольно плохо знаком с дизайном и архитектурой баз данных SQL.Я создаю таблицу для хранения ежедневных файлов моментальных снимков за 6 месяцев из моей исходной системы.С помощью этого сценария можно создать усеченную версию таблицы данных:

CREATE TABLE AccountHist 
(
    EffectiveDate datetime not null,
    AccountNumber bigint not null,
    Balance float not null,
    Status char(3) not null,
    IntRate real not null,
  etc......
)

EffectiveDate и AccountNumber вместе являются уникальными и никогда не должны дублироваться, поэтому я хочу добавить ограничение PK в таблицу, но яЯ не могу понять, должен ли он быть CLUSTERED или NONCLUSETERD:

CONSTRAINT PK_AcctEffDate PRIMARY KEY (?) (EffectiveDate, AccountNumber)

У меня есть понимание по определению различий между кластерными и некластеризованными индексами.Я чувствую, что должен использовать кластеризацию, потому что, ну, это то, что я считаю наиболее распространенным, но также имеет смысл сортировать данные по EffectiveDate.

Меня сбивает с толку то, что я думаю, что мне также нужнонекластеризованные индексы для EffectiveDate и AccountNumber.Вот два общих запроса, которые я ожидаю выполнить:

select AccountNumber, Balance from AccountHist
where EffectiveDate = (select max(EffectiveDate) from AccountHist)
and Status = 'ACT'

и

select EffectiveDate, Avg(IntRate) AvgRate from AccountHist
where EffectiveDate >= '01/01/2019' and EffectiveDate < '02/01/2019'
group by EffectiveDate

Это сводится к трем основным вопросам: 1. Могу ли я создать отдельные индексы для 2 столбцов, которые такжесделать мой ПК?Если так, что должно быть кластеризовано против некластеризованного?2. Должен ли я использовать суррогатный ключ?3. Какая настройка даст наилучшую производительность при запросах и загрузке данных?

Спасибо.

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