Полагаю, стоит опубликовать это отдельно:
Использование преобразования символов для нарезки дат выходного времени (приведение или преобразование в varchar) медленнее, чем использование DateAdd(Day, DateDiff(Day, 0, DateCreated), 0)
.Я обработал полные результаты тестирования сценариев и производительности для поддержки этого утверждения .
SELECT DISTINCT
BatchCode
,SUM(Quantity) as Created
,TotalQuantity
,Status
,Destination
,DateAdd(Day, DateDiff(Day, 0, DateCreated), 0) as DayCreated
,CreatedBy
FROM FGIS.dbo.DropshipPackinglist
GROUP BY
BatchCode,
TotalQuantity,
Status,
Destination,
CreatedBy,
ModifiedBy,
DateDiff(Day, 0, DateCreated) -- note that the DateAdd convert back to datetime is not needed
Кроме того, обратите внимание, что ваш список GROUP BY не совпадает с вашим списком SELECT, поэтому некоторые изменениянеобходимо.
ОБНОВЛЕНИЕ
Кажется, что экономия ЦП при использовании преобразований DateAdd и varchar, хотя и относительно много, совсем не так уж много (только долимиллисекунда на строку).Тем не менее, это все еще разница в производительности, и мне кажется, лучше всего сохранить все возможные биты.