Используйте INT против DATE в предложении где

У меня есть две таблицы в хранилище данных: balances а также dates, Balances имеет следующую структуру:

Surrogate Key Date | Date       | Account | Balance
1                  | 2017-02-01 | 100     | 1234
1                  | 2017-02-01 | 200     | 5151
2                  | 2017-02-02 | 100     | 5123
2                  | 2017-02-02 | 200     | 8234

А также dates имеет следующую структуру:

Surrogate Key Date | Date       | Weekday | Week in Year | ... other columns 
1                  | 2017-02-01 | Wed     | 5            |
2                  | 2017-02-02 | Thu     | 5            |

Surrogate Key Date столбец имеет тип INT, а Date столбец типа DATE в обеих таблицах.

Суррогатный ключ в balances таблица используется в запросах OLAP, а дата используется для регулярных отчетов.

Теперь мне нужно разработать программу, которая интенсивно использует базу данных (это пакетный процесс), и ей нужно многократно обращаться к таблице баланса через столбец даты. Должен ли я использовать в этом процессе столбец суррогатной контрольной даты или столбец Дата? Мне нужно отфильтровать по дате. Доступ INT в предложении where более эффективен, чем доступ DATE? Должен ли я игнорировать Surrogate Key Date колонка, когда не используется OLAP?

1 ответ

Решение

С точки зрения производительности это, скорее всего, не имеет значения для SAP HANA. Вообще говоря, HANA не работает с фактическими типами данных при расчете объединений и наборов результатов, но с внутренними ссылочными идентификаторами.

На самом деле, я вообще не вижу причины для того, чтобы иметь суррогатный ключ, когда он отображает 1:1 на Date колонка. Кроме того, поскольку кажется, что допускается дублирование, это вовсе не ключ. Не уверен, как вы должны обращаться к конкретным записям с той же даты в этой модели.

Другие вопросы по тегам