Я читал о том, что поля VARCHAR преобразуются в поля CHAR всякий раз, когда MySQL создает временную таблицу.
Если у меня есть следующая таблица...
- Превышение 100 тыс. строк
- Дюжина столбцов VARCHAR с реальной длиной (например, 10 для телефонных номеров).
- 5 столбцов VARCHAR установлены на 15 КБ (с длиной, которая может быть всего 20, но в худшем случае до 15 КБ)
И, скажем, у меня есть этот запрос...
- Возвращает несколько столбцов, включая VARCHAR.
- СОЕДИНЕНИЕ с полдюжиной других таблиц (не в столбцах VARCHAR)
- Сортирует строки по дате и числовому идентификатору (т. е. не в столбцах VARCHAR).
- Имеет предложение WHERE, которое не включает поля VARCHAR.
- Имеет LIMIT 12 строк
Когда MySQL создает временную таблицу для сортировки и иногда группировки (в некоторых случаях), что оказывается во временной таблице?
Например, включает ли таблица только столбцы, необходимые для выбора возвращаемых строк (т. е. те, которые указаны в предложениях WHERE и ORDER BY), за которыми следует механизм базы данных, определяющий 12 строк в LIMIT, а затем считывающий данные только для эти 12 рядов? Или во временную таблицу включен больший блок данных (например, все потенциальные строки, включая длинные столбцы VARCHAR)?
CREATE TEMPORARY TABLE temp_table (count int);
- person Matteo   schedule 28.11.2011