Следующий запрос выполняется быстрее (1:05):
SELECT DATEPART(DW,DATEFROMPARTS(
FLOOR(20180501/10000)
,FLOOR(20180501-FLOOR(20180501/10000)*10000)/100
,FLOOR(20180501-FLOOR(20180501/100)*100)))
GO 1000
Чем (1:10):
SELECT DATEPART(DW,CAST(CAST(20180501 AS nvarchar) AS DATE))
GO 1000
Почему?
У меня естьтаблица с 2 миллиардами записей (примерно), поэтому разница становится важной.За жестко закодированной датой скрывается гораздо больше логики.В противном случае, если существует лучший подход, с точки зрения производительности, для выполнения той же логики, не стесняйтесь исправлять меня.
Столбец даты всегда целочисленный и не всегда имеет одинаковый формат.Извлекаются два формата: ГГГГММДД и ГГГГММ.Я знаю, немного беспорядка.
Спасибо!