|
|
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
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 выбирает нормально, т.е. запрос рабочий Вопрос - как обработать этот запрос по частям чтоб он не весь выбирался с разу а частями и сразу эти части вставлять в другую таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 14:05:23 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
Если версия MySQL ниже 5.6, то избавьтесь от конструкции IN (SELECT ...), например, заменой на JOIN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 14:20:18 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
да версия 5.5.25 - MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 14:23:09 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
INSERT INTO `TABLE` SELECT `ID`, `NUMBER`, `ARL`, `BRAND`, `DISPLAY` FROM `TABLE1` JOIN `TABLE2` ON (`ID` = `_ID` and `NUMBER` = `_NUMBER` and `BRAND` = `_BRAND`) всеравно не работает как надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 15:37:44 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
Graf_Vorontsovвсеравно не работает как надоВ чем это проявляется? Отдельно SELECT выдает правильный результат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 15:46:27 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
очень долго идёт выборка я хотел бы чтоб частями выбирало и частями вставляло т.к. пробовал 1000 записей выбрало нормально, а вот 10тыс уже долго висит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2013, 16:00:09 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
неужели никто не знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 17:47:39 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
У тебя тупо нехватает памяти - и начинает свопить. И это вряд ли возможно вылечить. Рассмотри внимательно структуры таблиц. ID - это у них primary key? если да - выгрузи сначала только их, тут порядок расхода оперативы - сотни метров, терпимо. Ну а дальше можно не спеша кусочками подтягивать остальные поля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 18:06:46 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
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 или аналогично, если есть, по таймстампу.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 18:43:28 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
javajdbc2. по частям переносить данные -- вполне здравая идея. Главное продумать способ деления на части и уточнить -- будут ли исходные данные менятся за время переноса по частям и что делать если они меняются. 3. делить данные можно легко по ИД , допусмим по 10К ид ...where id between 110000 and 120000 или аналогично, если есть, по таймстампу.... Поскольку у него две таблицы, и нет гарантии, что меньшая является подмножеством большей, это может сильно усложнить процесс. Потому всё-таки базовую выборку минимального объёма (по размеру записи - только идентифицирующее поле или поля) разумнее выполнить одним запросом. Т.е. делить не горизонтально, по записям, а вертикально, по полям данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 19:23:29 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
SELECT INTO OUTFILE 'file_name' export_options ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 19:43:47 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
делить по одной колонке нельзя данные сложно расположены в колонках есть одинаковые записи например ID, NUMBER, BRAND, DISPLAY 2,2135nm,TOY,2135 NM 2,2138,QW,2138 5,2138,QW,2138 и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 19:51:55 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
Graf_Vorontsovделить по одной колонке нельзя данные сложно расположены в колонках есть одинаковые записи например ID, NUMBER, BRAND, DISPLAY 2,2135nm,TOY,2135 NM 2,2138,QW,2138 5,2138,QW,2138 и т.д. Только вы знаете ваши данные -- вам и решать как удобнее делить. Если вы хотите чтоб за вас кто-то проанализировал -- или наймите специалиста или (без никаких гарантий на успех) выдавайте максимально количество информации здесь и может-быть-кто-нибудь-что-нибудь придумает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 20:04:18 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
Graf_Vorontsovв колонках есть одинаковые записиВ смысле полные дубликаты по всем полям таблицы??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 20:55:59 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
нет, я пример написал как бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 21:19:49 |
|
||
|
Выборка большого количества строк и ставка в другую таблицу
|
|||
|---|---|---|---|
|
#18+
Хорошо... на таблице хотя бы один уникальный (скажем, первичный) индекс имеется? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2013, 22:23:29 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38455191&tid=1835775]: |
0ms |
get settings: |
4ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 344ms |

| 0 / 0 |
