Я создаю надежную таблицу дат, чтобы узнать, как лучше на нее ссылаться. Кластерный индекс первичного ключа будет находиться на целочисленном ключе смарт-даты (согласно спецификации Kimball) с именем DateID. До сих пор я выполнял запросы к нему так:
select Foo.orderdate -- a bunch of fields from Foo
,DTE.FiscalYearName
,DTE.FiscalPeriod
,DTE.FiscalYearPeriod
,DTE.FiscalYearWeekName
,DTE.FiscalWeekName
FROM SomeTable Foo
INNER JOIN
DateDatabase.dbo.MyDateTable DTE
ON DTE.date = CAST(FLOOR(CAST(Foo.forderdate AS FLOAT)) AS DATETIME)
Имейте в виду, что Date - это поле некластеризованного индекса со значениями, такими как:
2000-01-01 00: 00: 00.000
Мне просто пришло в голову, что, поскольку у меня есть кластеризованный целочисленный индекс (DATEID), возможно, мне следует преобразовать дату и время в поле моей базы данных, чтобы соответствовать ему, и связать на основе этого поля.
Что вы думаете, ребята?
Кроме того, в зависимости от вашего первого ответа, если я обычно извлекаю эти поля из таблицы дат, какой тип индекса я могу оптимизировать для получения этих полей? Индекс покрытия?