Ответ 1
Вы упомянули некоторые вещи, которые верны, я объясню, как работает VARCHAR.
Если вы укажете VARCHAR (60), это означает, что он может содержать до 60 символов. Если он содержит меньше символов, скажем, 50 - тогда MySQL использует 50 байтов для хранения данных вместо 60.
Совершенно противоположно с CHAR (60) - он резервирует 60 байтов независимо от длины строки, которую вы хотите сохранить.
Теперь, как работает VARCHAR? Если вы укажете его как VARCHAR (255), это означает, что в столбце будет зарезервировано 1 байт + длина строковых байтов. Этот 1 байт указывает, сколько времени занимает строка. 1 байт = вы можете иметь от 0 до 255 сохраненных значений (2 до 8 = 256).
Что касается VARCHAR, который выше 255, вам нужно как-то сохранить, сколько байтов используется. Поскольку 1 байт может хранить только до 256 различных значений (0 - 255), вам нужно использовать два байта. Два для мощности 16 = 65536, что означает, что вы можете сохранить любую строку до этого размера, а затем она добавляет 2 байта, чтобы указать, как долго будет строка.
Итак, чтобы сократить его, разница в производительности - это то, что если у вас есть VARCHAR (65536), и вы используете 200 байтов для хранения текста, вы теряете лишний байт, который будет использовать VARCHAR (65536). Можно подумать "о, но это всего лишь 1 байт, который заботится об этом". На самом деле много людей - представьте себе, что на столе собрано несколько столбцов VARCHAR, которые получили 50 миллионов записей. Скажем, у вас есть 3 столбца varchar, каждый из которых содержит дополнительный байт - 3 байта * 50 миллионов ~ 144 мегабайта впустую. Самое смешное, что это не просто потерянное пространство. Это также способствует обработке накладных расходов и использованию дополнительной ОЗУ, когда вы хотите что-то прочитать. И кто скажет, что в вашей БД будет всего одна таблица, которая будет большой?
Знание этой информации может помочь вам решить, что лучше всего использовать.
http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html, если вы не проверяли его раньше, он объясняет, как хранится каждый тип данных и сколько места он требует.