Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка большого количества строк и ставка в другую таблицу / 17 сообщений из 17, страница 1 из 1
05.11.2013, 14:05:23
    #38452994
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
INSERT INTO `TABLE`
SELECT `ID`, `NUMBER`, `ARL`, `BRAND`, `DISPLAY`
FROM `TABLE1`
where (ID, NUMBER, BRAND, DISPLAY)
IN (SELECT `_ID`, `_NUMBER`, `_BRAND`, `_DISPLAY` FROM `TABLE2`)

нужно выбрать из одной таблицы данные, соответствующие данным в другой и вставить в третью
в `TABLE1` 10 млн строк
в `TABLE2` 2млн 700тыс строк

запрос выбирался очень долго, сутки примерно и не закончился, я его выключил, т.к. непонятно когда это закончится.
пробовал выбирать LIMIT 1000 выбирает нормально, т.е. запрос рабочий

Вопрос - как обработать этот запрос по частям чтоб он не весь выбирался с разу а частями и сразу эти части вставлять в другую таблицу?
...
Рейтинг: 0 / 0
05.11.2013, 14:20:18
    #38453020
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Если версия MySQL ниже 5.6, то избавьтесь от конструкции IN (SELECT ...), например, заменой на JOIN.
...
Рейтинг: 0 / 0
05.11.2013, 14:23:09
    #38453025
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
да версия
5.5.25 - MySQL
...
Рейтинг: 0 / 0
05.11.2013, 15:37:44
    #38453199
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
INSERT INTO `TABLE`
SELECT `ID`, `NUMBER`, `ARL`, `BRAND`, `DISPLAY`
FROM `TABLE1`
JOIN `TABLE2` ON (`ID` = `_ID` and `NUMBER` = `_NUMBER` and `BRAND` = `_BRAND`)



всеравно не работает как надо
...
Рейтинг: 0 / 0
05.11.2013, 15:46:27
    #38453215
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Graf_Vorontsovвсеравно не работает как надоВ чем это проявляется?
Отдельно SELECT выдает правильный результат?
...
Рейтинг: 0 / 0
05.11.2013, 16:00:09
    #38453248
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
очень долго идёт выборка
я хотел бы чтоб частями выбирало и частями вставляло
т.к. пробовал 1000 записей выбрало нормально, а вот 10тыс уже долго висит
...
Рейтинг: 0 / 0
06.11.2013, 17:47:39
    #38454955
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
неужели никто не знает?
...
Рейтинг: 0 / 0
06.11.2013, 18:06:46
    #38455000
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
У тебя тупо нехватает памяти - и начинает свопить. И это вряд ли возможно вылечить.

Рассмотри внимательно структуры таблиц. ID - это у них primary key? если да - выгрузи сначала только их, тут порядок расхода оперативы - сотни метров, терпимо. Ну а дальше можно не спеша кусочками подтягивать остальные поля.
...
Рейтинг: 0 / 0
06.11.2013, 18:43:28
    #38455058
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Graf_VorontsovINSERT INTO `TABLE`
SELECT `ID`, `NUMBER`, `ARL`, `BRAND`, `DISPLAY`
FROM `TABLE1`
where (ID, NUMBER, BRAND, DISPLAY)
IN (SELECT `_ID`, `_NUMBER`, `_BRAND`, `_DISPLAY` FROM `TABLE2`)

нужно выбрать из одной таблицы данные, соответствующие данным в другой и вставить в третью
в `TABLE1` 10 млн строк
в `TABLE2` 2млн 700тыс строк

запрос выбирался очень долго, сутки примерно и не закончился, я его выключил, т.к. непонятно когда это закончится.
пробовал выбирать LIMIT 1000 выбирает нормально, т.е. запрос рабочий

Вопрос - как обработать этот запрос по частям чтоб он не весь выбирался с разу а частями и сразу эти части вставлять в другую таблицу?

1. полезно отключать индекст при массивных вставках а потом
перестраивать

2. по частям переносить данные -- вполне здравая идея.
Главное продумать способ деления на части и
уточнить -- будут ли исходные данные менятся за время переноса
по частям и что делать если они меняются.

3. делить данные можно легко по ИД , допусмим по 10К ид
...where id between 110000 and 120000
или аналогично, если есть, по таймстампу....
...
Рейтинг: 0 / 0
06.11.2013, 19:23:29
    #38455097
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
javajdbc2. по частям переносить данные -- вполне здравая идея.
Главное продумать способ деления на части и
уточнить -- будут ли исходные данные менятся за время переноса
по частям и что делать если они меняются.

3. делить данные можно легко по ИД , допусмим по 10К ид
...where id between 110000 and 120000
или аналогично, если есть, по таймстампу....
Поскольку у него две таблицы, и нет гарантии, что меньшая является подмножеством большей, это может сильно усложнить процесс. Потому всё-таки базовую выборку минимального объёма (по размеру записи - только идентифицирующее поле или поля) разумнее выполнить одним запросом. Т.е. делить не горизонтально, по записям, а вертикально, по полям данных.
...
Рейтинг: 0 / 0
06.11.2013, 19:43:47
    #38455120
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
SELECT INTO OUTFILE 'file_name' export_options
?
...
Рейтинг: 0 / 0
06.11.2013, 19:51:55
    #38455135
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
делить по одной колонке нельзя
данные сложно расположены
в колонках есть одинаковые записи
например
ID, NUMBER, BRAND, DISPLAY
2,2135nm,TOY,2135 NM
2,2138,QW,2138
5,2138,QW,2138

и т.д.
...
Рейтинг: 0 / 0
06.11.2013, 20:04:18
    #38455148
javajdbc
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Graf_Vorontsovделить по одной колонке нельзя
данные сложно расположены
в колонках есть одинаковые записи
например
ID, NUMBER, BRAND, DISPLAY
2,2135nm,TOY,2135 NM
2,2138,QW,2138
5,2138,QW,2138

и т.д.

Только вы знаете ваши данные -- вам и решать как
удобнее делить.

Если вы хотите чтоб за вас кто-то проанализировал --
или наймите специалиста или
(без никаких гарантий на успех)
выдавайте максимально количество информации
здесь и может-быть-кто-нибудь-что-нибудь придумает.
...
Рейтинг: 0 / 0
06.11.2013, 20:55:59
    #38455191
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Graf_Vorontsovв колонках есть одинаковые записиВ смысле полные дубликаты по всем полям таблицы???
...
Рейтинг: 0 / 0
06.11.2013, 21:19:49
    #38455212
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
нет, я пример написал как бывает
...
Рейтинг: 0 / 0
06.11.2013, 22:23:29
    #38455251
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
Хорошо... на таблице хотя бы один уникальный (скажем, первичный) индекс имеется?
...
Рейтинг: 0 / 0
07.11.2013, 10:55:12
    #38455676
Graf_Vorontsov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка большого количества строк и ставка в другую таблицу
впринципе на первой таблице могу сделать ещё одну колонку с уникальными . автоинкрементом заполню
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка большого количества строк и ставка в другую таблицу / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]