Разница действительно имеет значение только для MyISAM, другие механизмы хранения не заботятся о разнице.
РЕДАКТИРОВАТЬ: Многие пользователи отметили, что InnoDB заботится: ссылка 1 от steampowered , ссылка 2 от Kaan .
С MyISAM со строками фиксированной ширины есть несколько преимуществ:
Нет фрагментации строк: с помощью строк переменной ширины можно разбить отдельные строки на несколько разделов в файле данных. Это может увеличить поиск диска и замедлить работу. Его можно дефрагментировать с помощью OPTIMIZE TABLE, но это не всегда практично.
Размер указателя на файл данных: В MyISAM существует концепция указателя на файл данных, который используется, когда ему необходимо обратиться к файлу данных. Например, это используется в индексах, когда они ссылаются на то, где на самом деле присутствует строка. При фиксированных размерах ширины этот указатель основан на смещении строк в файле (т. Е. Строки равны 1, 2, 3 независимо от их размера). С переменной шириной указатель основан на байтовом смещении (то есть строки могут быть 1, 57, 163). В результате этого для больших таблиц указатель должен быть больше, что потенциально добавляет к таблице намного больше накладных расходов.
Легче исправить в случае коррупции. Поскольку каждая строка имеет одинаковый размер, если ваша таблица MyISAM повреждена, ее гораздо легче восстановить, поэтому вы потеряете только те данные, которые действительно повреждены. В случае переменной ширины теоретически возможно, что указатели переменной ширины будут испорчены, что может привести к неправильному выводу данных.
Теперь основным недостатком фиксированной ширины является то, что она тратит больше места. Например, вам нужно использовать поля CHAR вместо полей VARCHAR, чтобы в итоге было занято дополнительное пространство.
Как правило, у вас не будет большого выбора в формате, поскольку он продиктован на основе схемы. Тем не менее, это может быть полезно, если у вас есть только несколько varchar или один blob / text, чтобы попытаться оптимизировать это. Например, рассмотрите возможность переключения единственного varchar на символ или разбейте BLOB-объект на его собственную таблицу.
Подробнее об этом вы можете прочитать по адресу:
http://dev.mysql.com/doc/refman/5.0/en/static-format.html
http://dev.mysql.com/doc/refman/5.0/en/dynamic-format.html