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