Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Не могу понять принципы, по которым MySQL создает временные таблицы. То, что я наблюдаю, не соотносится с тем, что написано в документации.
Перед выполнением запроса делаю flush status. В результате
Created_tmp_disk_tables=0
Created_tmp_tables=0
Теперь делаю сам запрос:
select id from aaa limit 1
И после него show status, который возвращает
Created_tmp_disk_tables=1
Created_tmp_tables=1
CREATE TABLE `aaa` (
`id` int(10) unsigned DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251
В таблице содержится только одна запись id=1.
Объясните, пожалуйста, почему используется временная таблица и почему она выбрасывается на диск?
На момент тестирования никакие другие запросы не выполнялись. Т.е. 100% что эта временная таблица создана от этого запроса. При этом Explain этого запроса не показывает, что будет созданна временная таблица.
Отредактированно DrewBlin (23.03.2010 14:44:23)
Неактивен
http://dev.mysql.com/doc/refman/5.4/en/ … tmp_tables
Временную таблицу создает команда SHOW STATUS, о чем прямо написано в документации.
Неактивен