Всем привет! Занялся оптимизацией базы данных MySQL, в связи с чем два вопроса:
1. Если в таблице содержится 30 тысяч записей и в этой же таблице в каждой записи присутствует пустое поле varchar, влияет ли это на размер базы, скорость выборки или на доп нагрузку на сервер?
2. Если поля varchar заполнены только на 50% и если поля заполнены на 100%, есть ли между ними разница в плане размера базы данных?
1. Поле типа varchar всегда занимает минимум 1 или 2 байта на диске, в зависимости от максимальной длины этого поля. В индексах и при операциях в памяти разворачивается до своего максимального размера (подобно char). Больше данных -> меньше данных влезает в кеш -> больше нагрузка на диски -> медленнее работа.
На таком смешном размере таблицы не имеет никакой роли. Если это уже потребовалось оптимизировать - огромные грабли в другом месте.
2. Да, на диске varchar хранит только то, что положили в поле. Плюс 1 или 2 байта оверхеда на хранению длины записанной строки.
1. не заметил
2. на размер влияет заполненность записей, но место высвобождается не сразу.
А вообще выключайте кеширование запросов и тестируйте скорость отдачи, можете еще скриптиком заполнить 200 тыс записей, чтобы сильнее ощутить какую то разницу.