#sql #performance #sql-server-2005 #sql-server-2008-r2
#sql #Производительность #sql-server-2005 #sql-server-2008-r2
Вопрос:
В нашем хранилище данных есть таблица измерений CalendarTimeUTC, которая выглядит следующим образом:
PK в таблице — это CalendarTimeUTCId (кластеризованный). Раньше это было поле Int. Во всех таблицах фактов есть calendarId (некоторые из них представляют собой таблицы с разделением на несколько миллиардов строк).
Мы хотим перейти от ввода значения ДАТЫ к значению ДАТЫ ЧАСА в этом поле.
Примеры данных (старых и новых):
Теперь, с появлением SQL 2008 и блестящей новой реализации DATETIME, есть ли причина переключить столбец ID измерения с INT на DATETIME?
Как это повлияет на размер индекса в таблицах фактов? Что еще более важно, как это повлияет на производительность?
Комментарии:
1. Я бы не стал вводить часы в поле даты — в 24 раза больше записей в вашем измерении календаря….
2. Я изо всех сил пытаюсь понять, как это связано с
date
типом. Ранее (насколько я понимаю, до SQL Server 2008) ваша таблица календаря содержала только даты, но значения былиdatetime
типа, потому что тогда в SQL Server не былоdate
типа. Теперь вы планируете добавить временную часть, и вам снова придется использоватьdatetime
. Так что же вы подразумеваете под вовлечениемdate
?3. @Andriy M: Ошибка с моей стороны — я имею в виду
DATETIME
.4. Радж, зачем ты вообще это делаешь? Sql Server 2005 имеет тип данных DateTime. Какая часть версии 2008 является блестящей и новой? Почему вы создаете идентификатор, который выглядит как дата? Почему вы сохраняете дату, которая выглядит как идентификатор? Есть ли еще поля в вашей таблице измерений календаря, которые вы не показываете?
Ответ №1:
Тип данных Datetime занимает 8 байт. Тип данных Int занимает всего 4 байта. Если вы хотели преобразовать в тип данных date (например, потому что вам нужно было использовать функции обработки даты), я бы предложил использовать smalldatetime, который занимает всего 4 байта.
Что касается индексов и производительности: поскольку индексы будут иметь одинаковый физический размер данных, я не думаю, что вы увидите снижение производительности или увеличение размера индексов.