Во время поиска корыта SO, я нашел два противоречащих ответа (и даже комментарий, который заявил об этом), но не дал окончательного ответа:
Проблема в том, есть ли какое-либо преимущество в производительности, если вы сохраняете поле TEXT/BLOB вне таблицы?
Предположим, что
- ВЫ SELECT правильно (только выберите TEXT/BLOB, если требуется, нет SELECT *)
- Таблицы индексируются правильно, где это имеет смысл (так что это не вопрос "если вы его индексируете" )
- Дизайн базы данных не имеет большого значения. Это вопрос идентификации поведения MySQL в этом специальном случае, а не для решения некоторых проблем с дизайном базы данных. Предположим, что эта база данных имеет только одну таблицу (или две, если TEXT/BLOB разделяется)
- используемый движок: innoDB (другие были бы интересны, если они принесли разные результаты)
В этом сообщении указано, что размещение текста в текстовой таблице в отдельной таблице помогает только в том случае, если вы уже выбрали неправильный путь (всегда ВЫБОР ТЕКСТА /BLOB, даже если это не нужно) - что TEXT/BLOB в той же таблице в основном является лучшим решением (меньше сложности, бездействия и т.д.), поскольку TEXT/BLOB хранится отдельно в любом случае
Единственный раз, когда перемещение столбцов TEXT в другую таблицу даст какую-либо выгоду, если есть тенденция обычно выбирать все столбцы из таблиц. Это просто введение второй плохой практики для компенсации первого. Разумеется, две ошибки не совпадают с тремя левыми.
В этом сообщении указано, что:
Когда таблица имеет столбцы TEXT или BLOB, таблица не может быть сохранена в памяти
Означает ли это, что этого уже достаточно, чтобы иметь TEXT/BLOB внутри таблицы, чтобы получить производительность?
MySQL varchar (2000) против текста?
Мой вопрос в основном таков: какой правильный ответ?
Действительно ли имеет значение, если вы храните TEXT/BLOB в отдельной таблице, если вы SELECT
правильно?
Или даже имеет TEXT/BLOB внутри таблицы, создает потенциальную производительность?