Есть ли какое-то преимущество в производительности для хранения дат в виде целых в MS SQL Server? - PullRequest
3 голосов
/ 23 февраля 2009

Или с точки зрения пространства или скорости запросов и сравнения полей?

Ответы [ 4 ]

5 голосов
/ 23 февраля 2009

Столбцы Datetime уже хранятся в SQL Server как 8-байтовые двоичные значения - 4 байта для части даты и 4 для части времени. Любое другое изображение, которое вы видите, это просто представление, чтобы сделать их более читабельными.

Если вы знаете, что вам не нужен полный диапазон значений (скажем, вы не заботитесь о временной части и, например, не используете 2008), вы могли бы сделать немного лучше с целым числом , Но я действительно сомневаюсь, что вы заметите разницу в производительности на всех, кроме самых больших и загруженных таблиц.

Как всегда, в профиль нужно быть уверенным.

2 голосов
/ 23 февраля 2009

с целочисленными значениями также необходим код, чтобы убедиться, что это действительно дата вместо вставляемого 20090230 Если вы используете SQl Server 2008, вы можете использовать тип данных DATE, который использует только 3 байта

0 голосов
/ 23 февраля 2009

Хранение дат в виде целых чисел было бы плохой вещью, потому что вам всегда приходилось бы воссоздавать данные в виде даты, чтобы проводить математические сравнения дат или дат. Это негативно скажется на производительности. Кроме того, для хранения дат в виде целых чисел потребуется написать триггер, чтобы гарантировать, что никакие даты не будут добавлены в поле. Если вы этого не сделаете, у вас будут проблемы с целостностью даты, если в вашем поле хранятся недопустимые даты, например 2302009.

0 голосов
/ 23 февраля 2009

MS SQL 2008 может хранить и имеет тип столбца даты и времени отдельно. Зачем использовать int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...