SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 18.11.2009 10:20:39

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Временные таблицы

Народ расскажите пожалуйста про временные таблицы, как создавать, работать с ними, а лучше подскажите источник где можно почитать...
Заранее спасибо!

Неактивен

 

#2 18.11.2009 14:27:41

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Временные таблицы

Временные таблицы — это такие таблицы, которые видны только текущему
подключению (т.е. временные таблицы из двух разных подключений независимы
и никак друг с другом не конфликтуют). Создавать, добавляя ключевое слово
TEMPORARY. В остальном — как обычные таблицы smile

Неактивен

 

#3 18.11.2009 15:38:13

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Re: Временные таблицы

А для чего их обычно используют?

Неактивен

 

#4 18.11.2009 17:39:04

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Re: Временные таблицы

и как можно их использовать для оптимизации запроса?

Неактивен

 

#5 18.11.2009 21:42:47

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Временные таблицы

Обычно их используют для хранения временных данных. Для оптимизации... ну,
например, выбирать часть данных туда, а потом выбирать данные из нее smile

Неактивен

 

#6 20.11.2009 10:22:40

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Re: Временные таблицы

еще вопрос
Из мануала по оптимизации phpclub.ru


Иногда бывает такая ситуация, что нам постоянно приходится делать выборки из одной и той же части некоторой очень большой таблицы, например, во многих запросах происходит соединение с частью таблицы:
[LEFT] JOIN b ON b.id = a.b_id AND b.field1 = 123 AND b.field2 = 234
 

Во многих подзапросах   происходит выборка из данных таблиц, но вот я немного не пойму одного, временная таблица может использоваться только один раз в запросе иначе получается ошибка "Can't reopen table:"
Не могли бы Вы немного пояснить?

Отредактированно insy (20.11.2009 10:23:36)

Неактивен

 

#7 20.11.2009 13:18:18

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Временные таблицы

Есть такое ограничение, прийдется писать так, чтобы использовать временную
таблицу только один раз внутри одного запроса. Видимо, ограничение не снимут
никогда, т.к. оно присутствует начиная с версии 3.23.

Неактивен

 

#8 20.11.2009 13:58:15

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Re: Временные таблицы

Еще с такой проблемой столкнулся!
Как сделать так чтобы она была стабильной(каждый раз создавать ее в запросе?) и не удалялась каждый раз при обрыве соединения!Я конечно понимаю, что она потому и временная, но тогда какой толк? Скорость ее значительно выше, не спорю, но эта скорость только в процессе соединения.
Понимаю смешной вопрос, но все же...

Отредактированно insy (25.11.2009 09:49:08)

Неактивен

 

#9 25.11.2009 09:28:44

insy
Участник
Зарегистрирован: 16.11.2009
Сообщений: 11

Re: Временные таблицы

Есть еще вопросы paulus... Вернитесь в тему пожалуйста!

Неактивен

 

#10 26.11.2009 15:37:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Временные таблицы

Временные таблицы на то и временные, чтобы жить, пока живет соединение.
Переподключение, разумеется, должно убивать временную таблицу, т.к.
иначе бы два независимых подключения не смогли бы создавать временные
таблицы с одним именем.

Если Вам нужно, чтобы разные подключения видели одну и ту же табличку
в памяти, то Вам нужно сделать обычную табличку типа MEMORY. Обнуляться
данные в ней будут только при перезагрузке сервера.

Неактивен

 

Board footer

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