#tsql #sql-server-2008
#tsql #sql-server-2008
Вопрос:
Если я знаю, что значение столбца всегда должно находиться в диапазоне, разрешенном типом данных smallint, с точки зрения обеспечения целостности данных, мне кажется, что мне следует хранить данные в столбце smallint, а не в столбце int.
Однако мне интересно, есть ли какие-либо потери производительности, которые могут быть оплачены за счет использования меньшего количества байтов?
Комментарии:
1. sql-server-performance.com/datatypes «Всегда указывайте как можно более узкие столбцы. Чем уже столбец, тем меньше данных SQL Server должен хранить, и тем быстрее SQL Server способен считывать и записывать данные. Кроме того, если в столбце необходимо выполнить какие-либо сортировки, чем уже столбец, тем быстрее будет сортировка. [2000, 2005, 2008] Обновлено 2-3-2009 »
Ответ №1:
Меньшие типы = меньше места на диске, что приводит к более эффективным индексам. Однако этот прирост производительности будет минимальным, если не иметь дело с большим объемом данных; кроме того, чтобы избежать неявных преобразований (которые могут компенсировать любой прирост производительности, который вы видите), вам нужно быть уверенным, что каждый раз, когда вы ссылаетесь на этот столбец, вы используете правильный тип (включая сравнения с параметрамии т.д.).
Вероятно, промывка в любом случае.
Ответ №2:
Как упоминает Стюарт, я ожидаю, что различия в производительности и хранении весьма незначительны.
Также стоит рассмотреть «домен», который вы хотите смоделировать с данным типом. Если smallint более точно моделирует домен для данных, тогда стоит сделать его явным, даже если это не дает вам заметного улучшения производительности.