Обычный метод проектирования - создать таблицу «Parts», например:
CREATE TABLE parts (page_id INTEGER, part_name VARCHAR(255), body TEXT);
, которая будет хорошо работать при меньшем трафике.(page_id в данном случае - это внешний ключ к странице, которая «владеет» этой частью - вы получите все части для данной страницы, сказав: natch SELECT * FROM parts WHERE page_id = :some_page_id
)
По мере роста трафика стоимостьизвлечение и сборка страниц могут стать вопиющими, и в этом случае разделение содержимого тела от более крупного текстового поля (как вы предложили) не будет ужасной идеей.На этом уровне выигрыш в скорости от прямой сериализации хэша в столбец базы данных и от того, что центральный процессор сервера приложений несет основную нагрузку на работу (в отличие от сервера БД), может стоить того.
Типы столбцов, которые могут вас заинтересовать, перечислены здесь в разделе «Требования к хранилищу для строковых типов»: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
Суммировано, TEXT (64 КБ) должен быть достаточно большим, чтобы вместить большинство основных данных.MEDIUMTEXT (16 МБ) или LONGTEXT (4096 МБ), если ваши данные заметно велики или вы прогнозируете их рост.BLOB, MEDIUMBLOB или LONGBLOB (такие же размеры, как у типов * TEXT), если вы собираетесь выполнять десериализацию любой переменной PHP из столбцов БД.