|
|
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Добрый день! Для работы использую dbForge Studio for MySQL, БД локальная на моем новом ноутбуке Core i5 есть несколько таблиц, но пример на основе 2 таблиц, так как он тоже не работает. Таблица 1 = заполнено только поле Time - это время (это как бы ID), в таблице 3 млн. строк CREATE TABLE auto.tmp_all ( Time decimal(20, 2) DEFAULT NULL, x decimal(20, 5) DEFAULT NULL, y decimal(20, 5) DEFAULT NULL, z decimal(20, 5) DEFAULT NULL, g decimal(20, 5) DEFAULT NULL, noise decimal(20, 3) DEFAULT NULL) Таблица 2 = заполнены все поля, в таблице 2 млн. строк CREATE TABLE auto.andro ( Time decimal(20, 2) DEFAULT NULL, x decimal(20, 5) DEFAULT NULL, y decimal(20, 5) DEFAULT NULL, z decimal(20, 5) DEFAULT NULL, g decimal(20, 5) DEFAULT NULL, noise decimal(20, 3) DEFAULT NULL) Задача: Обновить все поля в Таблице1 данными из Таблицы 2 при условие что поле Time совпадает Что я пробовал (все сводится к тому что запросы просто не выполняются - я ждал по 2 часа и ничего (( ): 1) Код: sql 1. 2. 3. Вообщем не знаю возможно ли решить мою задачу - прошу подсказать, а то может я зря теряю время, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 19:19 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
michail_s Код: sql 1. 2. 3. какое-то у тебя масло-масленое получилось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 19:59 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
michail_sвсе сводится к тому что запросы просто не выполняются - я ждал по 2 часа и ничего ((выдается сообщение об ошибке? или не дождался окончания выполнения операции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 20:01 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Добрый Э - Эх, Ошибки не выдается, просто висит что выполняется и все на этом ..., ждал 2 часа - потом остановил. Если делать запрос через MySQLWorkbench, то через 600 сек. выдается разрыв соединения, но ноутбук продолжает "шуметь", предполагаю, что запрос продолжает обрабатываться - хотя не знаю точно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 22:30 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Изначально пробовал такой запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. но тоже не дождаться когда обработается, Поэтому решил сначала все время Time добавить в одну таблицу, а потом в нее данные из остальных таблиц загружать какое-то у тебя масло-масленое получилось... Попробовал без Where t.Time = t1.Time, но тоже никак не дождаться окончания выполнения запроса (( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 22:37 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
michail_sДобрый день! Для работы использую dbForge Studio for MySQL, БД локальная на моем новом ноутбуке Core i5 есть несколько таблиц, но пример на основе 2 таблиц, так как он тоже не работает. Таблица 1 = заполнено только поле Time - это время (это как бы ID), в таблице 3 млн. строк CREATE TABLE auto.tmp_all ( Time decimal(20, 2) DEFAULT NULL, x decimal(20, 5) DEFAULT NULL, y decimal(20, 5) DEFAULT NULL, z decimal(20, 5) DEFAULT NULL, g decimal(20, 5) DEFAULT NULL, noise decimal(20, 3) DEFAULT NULL) Таблица 2 = заполнены все поля, в таблице 2 млн. строк CREATE TABLE auto.andro ( Time decimal(20, 2) DEFAULT NULL, x decimal(20, 5) DEFAULT NULL, y decimal(20, 5) DEFAULT NULL, z decimal(20, 5) DEFAULT NULL, g decimal(20, 5) DEFAULT NULL, noise decimal(20, 3) DEFAULT NULL) Задача: Обновить все поля в Таблице1 данными из Таблицы 2 при условие что поле Time совпадает Что я пробовал (все сводится к тому что запросы просто не выполняются - я ждал по 2 часа и ничего (( ): 1) Код: sql 1. 2. 3. Вообщем не знаю возможно ли решить мою задачу - прошу подсказать, а то может я зря теряю время, спасибо. EXPLAIN, DESC <table_name>, count(1) таблиц.... МикСофт, ФАК бы какойнибудь сделать по задаванию вопросов :-) Кажется у форума по СКЛ Сервер был такой... michail_s ... начните замерять время с милиона на 100, потом на 10000, потом на 100К... просто чтоб не мучатся а отлаживать на разумных часах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2016, 23:37 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
javajdbcМикСофт, ФАК бы какойнибудь сделать по задаванию вопросов :-) Кажется у форума по СКЛ Сервер был такой...Уже есть. Например, тут Правила -->Рекомендации. Вот только кто бы ещё всё это читал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 06:16 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
michail_sждал по 2 часа и ничего Сначала удалите записи из Т1, имеющие соответствие в Т2. Потом безусловно вставьте записи из Т2 в Т1. Это будет гораздо быстрее. Ну или хотя бы создайте индексы по полю Time и объявите уникальными (а то и первичными). Ещё было бы очень мудро поле переименовать - использование зарезервированных слов как-то не комильфо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 09:11 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Спасибо все за наводки. Вот что сделал: Попробовал запрос из первого поста (Попробовал только Select, а не Update) с 2.8 млн на 160 строк - обработался за 1 мин. 2.8 мин. на 700 строк обработался за 5 мин. Вывод, если нужно обработать 70К строк, то времени нужно 500 мин. - не очень хорошо. -------------------------------------- Опишу все с самого начала )) Прикрепил изображения какие таблицы у меня есть в БД и сколько в каждой таблице записей. Может я выбрал не правильный метод реализации. Задача в следующем: Поле Time - частично пересекается во всех таблицах, т.е. определенное значение столбца Time - может присутствовать в разных таблицах. Физицеский смысл поля Time - это время в формате Unix, поэтому оно и может повторяться в разных таблицах. Цель: Нужно все данные из этих таблиц объединить в одну. Т.е. будет только один столбец Time (т.к. он единственный повторяется во всех таблицах) и далее столбцы заполненные данными из отдельных таблиц. Далее из этой общей таблицы я буду делать Select-ы по нужным условиям. Дайте наводку как это лучше реализовать или вообще реализовать? То что я попробовал под сполером Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. этот запрос выполнился за 30 мин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 17:40 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Сейчас поле Time пытаюсь сделать во всех таблицах как Primery key с которыми уже получилось - запрос стал обрабатываться на много быстрее. Сейчас другая проблема возникла - в таблице в которой 2 млн. записей есть дубли по столбцу Time, из-за этого не дает назначить как Primery key. Пока использую такой запрос для поиска дублей Код: sql 1. ... но уже долго выполняется ... попытаюсь пока так. Но если у кого-то будут идеи по улучшению - буду признателен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 18:44 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Вообщем теперь вопрос: как удалить из таблицы в 2 млн. строки по дублям для одного столбца Time (которое не является первичным), т.е. если в столбце Time есть дубль, то удаляем эту строку. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2016, 19:23 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
Вообщем все получилось вроде: от дублей избавился таким запросом: Код: sql 1. Т.е. если по столбцу Time были дубли, то они удалились Поле Time назначил первичным ключом - видимо это и было проблемой со скоростью выполнения запроса)) Далее в одном запросе вставил все время в одну таблицу и сделал Left Join всех таблиц В итоге получил таблицу с почти 3 млн. строк, запрос выполнился за 5 мин. - ОК Всем спасибо Может кому пригодится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2016, 12:31 |
|
||
|
Заполнить таблицу Т1 данными из таблицы Т2 по условию
|
|||
|---|---|---|---|
|
#18+
michail_sесли по столбцу Time были дубли, то они удалились Но вот загадка - какие значения легли в остальные поля, кроме поля группировки Time? Согласно документации - случайные из группы... более того - документация не гарантирует даже, что они взяты из одной и той же записи! Так что предположение, что michail_sМожет кому пригодится я бы назвал весьма самонадеянным... а совет следовать тем же путём считаю безусловно "вредным советом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2016, 13:16 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39200170&tid=1831985]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 211ms |
| total: | 455ms |

| 0 / 0 |
