smallint всегда полезен? - PullRequest
       2

smallint всегда полезен?

0 голосов
/ 25 февраля 2011

Как вы думаете, сегодня тип базы данных smallint остается полезным, или он похож на 32/64-битный процессор (лучше использовать int )

Ответы [ 5 ]

1 голос
/ 25 февраля 2011

Я думаю, что все это зависит от базовой реализации СУБД и архитектуры процессора.В зависимости от конкретной архитектуры процессора различные типы примитивов могут обрабатываться по-разному и зависит от этой реализации (какие функциональные блоки процессор содержит для обработки конкретного случая с небольшим количеством тактов).Ширина в битах любого конкретного «типа» определяется архитектурой proc, хотя ширина шины составляет 32 бита (или 64), нет необходимости использовать только 32 бита или их кратные в типах данных.Из того, что я понимаю, для работы с 2-байтовыми типами потребуется немного больше времени, так как для этого потребуется «замаскировать результаты», но вы сэкономите с точки зрения памяти (оптимизация может заключаться в необходимости уменьшения использования памяти или использования ЦП илидоступ к диску в зависимости от вашего узкого места, я получаю, что память настолько дешевая, что почти всегда лучше жертвовать стоимостью там, но точка зрения остается неизменной).Таким образом, в случае большого количества данных, таких как квадриллионы строк, меньший тип данных, вероятно, все еще полезен, в случае БД, которая выполняет большую обработку записей, но без проблем с ограничением пространства.вероятно, было бы лучше выбрать тип, который соответствует данным и ширине шины.

1 голос
/ 25 февраля 2011

Да.

Если вам не нужно хранить числа вне диапазона smallint, то использование int просто излишне потребляет пространство (4 байта против 2 байтов для smallint).Основное правило: используйте тип данных, который наилучшим образом соответствует объему данных, которые он будет содержать.В том же духе, в мире SQL Server, является ли хорошей идеей всегда использовать VARCHAR (MAX) вместо, например, VARCHAR (100)?Нет.

0 голосов
/ 25 февраля 2011

Пусть реализация базы данных беспокоится об этом.

Замечание / подсказка, какие данные будут храниться в этом поле, всегда хорошо , это позволяет демону SQL принять это ввнимание, когда он пытается сделать лучшее для вас.

0 голосов
/ 25 февраля 2011

Если только пробел / размер строки / и т.д.является критическим соображением, я бы никогда не использовал целочисленный тип меньше 32-битного типа int.Вы почти гарантированно будете иметь проблемы с преобразованием типов / переполнением / недостатком где-то в будущем.Кроме того, системы довольно сильно оптимизированы для 32-битных операций (ваши 16-битные или 8-битные целые числа, вероятно, в любом случае обрабатываются в 32-битных регистрах).

В то же время, я, вероятно, не буду использовать64-разрядное целое число, если оно мне действительно не нужно.

0 голосов
/ 25 февраля 2011

Я не думаю, что это будет иметь большое значение с точки зрения производительности, но если вы не можете абсолютно гарантировать, что smallint никогда не будет слишком маленьким для ваших данных, используйте int: пространство дешево, а ошибки переполнения данных в полене.

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