Подтвердить что ты не робот

Varchar Fields - Является ли сила еще более эффективной?

Насколько эффективнее использовать поле varchar размером в два против другого числа? Я не думаю, что для SQL Server по умолчанию 50.

Тем не менее, я слышал (но не подтвердил), что размеры полей в качестве 2-го уровня более эффективны, поскольку они приравниваются к четным байтам, а компьютеры обрабатываются в битах и ​​байтах.

Итак, действительно ли поле, объявленное как varchar(32) или varchar(64), имеет реальную выгоду по сравнению с varchar(50)?

4b9b3361

Ответ 1

Нет.

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

Единственная степень масштабирования, связанная с VARCHAR, - это точный тип varchar (или TEXT/BLOB в некоторых диалектах SQL): если он меньше 256, он может использовать один байт для указания длины. если он меньше 65536 (64 КБ), достаточно двух байтов, три байта работают до 16777216 (16 МБ), четыре байта идут до 4294967296 (4 ГБ).

Кроме того, можно утверждать, что VARCHAR(50) является столь же дорогостоящим, как VARCHAR(255), поскольку для этого потребуется n + 1 байт памяти.

Конечно, перед рассмотрением Unicode...

Ответ 2

Я всегда думал, что люди выбирают полномочия из двух для полей varchar, потому что мы вундеркинды и то, что мы делаем. По крайней мере, то, что я всегда делал.

Ответ 3

Для SQL вообще? Нет. Для конкретной реализации, возможно.

Что более эффективно не определяется спецификацией (SQL - это просто спецификация), но как она реализована в определенной СУБД.

Ответ 4

Единственное материальное преимущество, которое вы увидите при использовании определенных максимальных длин, - это пространство памяти, необходимое для VARCHAR. Максимальная длина над 255 потребует дополнительного байта, чтобы сохранить длину значения в каждой строке (и дополнительные 2 байта для длин 256 или 2 и так далее).

Ответ 5

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