SQLinfo.ru - Все о MySQL

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

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

Вы не зашли.

#1 02.10.2011 18:46:04

Wander
Участник
Зарегистрирован: 02.10.2011
Сообщений: 6

Копирование данных в одинаковых таблицах

Есть две полностью идиентичные таблицы.. Один MyISAM второй MEMORY.... В мемори записываю данные онлайна обновляя первую при выходе... Вопрос.

Как связать таблицы? можно ли на уровне сервера делать обновление одной не затрагивая другую при обращении.... чтоб это делалось автоматом...


и второй... если первое не актуально как сделать обновление первой таблицы НЕЗНАЯ названия столбцов... Просто столбцы очень динамичны НО одинаковые... а перезаписывать файл запроса всегда забываю. Можно ли провести UPDATE типа INSERTA с SELECTом данных.... было REPLASE НО много ресурса кушает так как перезаписывает строку а не обовляет

Неактивен

 

#2 02.10.2011 20:09:41

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Копирование данных в одинаковых таблицах

Не совсем понимаю что вы пытаетесь делать ... :-)
Возможно вам помогут

1) Views либо Merge Teble

2)
DROP TABLE
CREATE ... FROM ... SELECT

Неактивен

 

#3 02.10.2011 20:20:22

Wander
Участник
Зарегистрирован: 02.10.2011
Сообщений: 6

Re: Копирование данных в одинаковых таблицах

Views я немного не понял... Но объясню что мне нужно.... Таблица memory у меня идёт как временное хранилище myisam и обновляет вторую при удалении из первой... просто в memory ОЧЕНЬ динамические и выборочные данные... Так вот мне нужно создать memory как зеркало значений к myisam или делать перезапись значений при удалении НЕЗНАЯ имён и кол-ва полей в обоих таблицах (так как я их часто изменяю) но как правило UPDATE не даёт использовать SELECT так динамично как INSERT например.... в UPDATE приходится описывать каждое значение и имена полей для обновления... Был выход делая REPLASE в виде INSERTA который тупо перезаписывает всю запись.. но это выходит накладно для производительности так как трогает все индексы в таблице

Неактивен

 

#4 02.10.2011 22:55:42

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Копирование данных в одинаковых таблицах


RENAME TABLE memory_table TO memory_tmp,memory_empty TO memory_table;
INSERT INTO disk_table SELECT * FROM memory_tmp;
TRUNCATE memory_tmp;
RENAME TABLE memory_tmp TO memory_empty;

Вот такой пример я описывал тут: Таблица HEAP как точная копия MyISAM

У вас проблемы с производительностью ? Вы вообще уверены что вам это надо ? :-)
Есть много других способов оптимизации.

Неактивен

 

#5 02.10.2011 23:02:16

Wander
Участник
Зарегистрирован: 02.10.2011
Сообщений: 6

Re: Копирование данных в одинаковых таблицах

А есть ли универсальный запрос вместо INSERT INTO disk_table SELECT * FROM memory_tmp; поменять на UPDATE ..... вот я про что... чтоб не прописывать все SET так как они меняются.... мне обновить данные нужно а не добавить)

Неактивен

 

#6 03.10.2011 00:30:20

evgeny
Гуру
Зарегистрирован: 04.05.2009
Сообщений: 335

Re: Копирование данных в одинаковых таблицах

Wander написал:

А есть ли универсальный запрос вместо INSERT INTO disk_table SELECT * FROM memory_tmp; поменять на UPDATE ..... вот я про что... чтоб не прописывать все SET так как они меняются.... мне обновить данные нужно а не добавить)

Есть

replace into disk_table select * from memory_tmp;

Неактивен

 

Board footer

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