SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 23.03.2010 14:33:54

DrewBlin
Участник
Зарегистрирован: 29.01.2009
Сообщений: 17

Создание временных таблиц

Добрый день.
Не могу понять принципы, по которым 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)

Неактивен

 

#2 23.03.2010 15:01:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Создание временных таблиц

http://dev.mysql.com/doc/refman/5.4/en/ … tmp_tables

Временную таблицу создает команда SHOW STATUS, о чем прямо написано в документации.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson