SQL: действительно ли эффективно использовать tinyint вместо Целого числа, если мое макс. значение 255?

Позволяет предполагают, что я хочу сохранить количество datagrid строк, которые могут быть максимум 24, потому что каждая строка составляет 1 час.

Для сохранения индекса строки в базе данных, tinyint поле было бы полностью достаточно. Но назад в моем уме я помню немного, что базы данных оптимизированы для целых чисел?!

Таким образом, действительно ли стоит для использования tinyint?

10
задан Pratik 9 September 2011 в 15:12
поделиться

4 ответа

При более узкой таблице база данных поместит больше записей на одной странице ввода-вывода и, следовательно, потребует меньше операций чтения с жесткого диска.

Практическое правило - всегда использовать тот тип данных, который требует наименьшего размера хранилища.

10
ответ дан 3 December 2019 в 21:19
поделиться

Tinyint является целым числом, и он будет быстрее INT, потому что TINYINT занимает меньше байт (1 байт), чем тип данных INT (4 байта).

Ссылка:

2
ответ дан 3 December 2019 в 21:19
поделиться

tinyint

меньше места - это хорошо.

2
ответ дан 3 December 2019 в 21:19
поделиться

Вообще, чем меньше места, тем лучше, так как чем больше строк помещается на 8k I/O Page на диске (или в памяти), тем меньше I/O требуется для поиска и/или извлечения данных... Это особенно важно для столбцов, используемых в индексах. Однако, если ваша машина, например, 32-битная и на ней установлена 32-битная ОС, то наименьший фрагмент памяти, к которому можно независимо обращаться, равен 32 битам, поэтому если это единственный столбец в схеме вашей таблицы, который меньше 32 бит, то это не имеет значения, потому что каждая полная строка данных должна начинаться и заканчиваться на границе 32 бит, поэтому ширина каждой строки должна быть кратна 32 битам.

т.е. если бы ваша таблица была

MyTable(ColA tinyint, ColB Int, ColC DateTime) Тогда каждая строка будет занимать 16 байт (128 бит) и 24 бита будут потрачены впустую.

С другой стороны, если у вас есть 4 колонки, которые могут быть tinyInts, то, конечно, используйте это, так как SQL server поместит четыре из них в одно 32-битное место хранения на диске (независимо от того, в каком порядке вы их объявите).

Те же принципы применимы к 64-битному SQL Server, работающему на 64-битной OS/CPUbB

3
ответ дан 3 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: