|
|
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
Есть интерфейс добавления большого объема данных в 2 таблицы MySQL. Проблема в том, что эти две таблицы связаны между собой по FK (один к одному) и я не могу использовать BULK INSERT (т.к. необходимо сначала вставить запись в одну таблицу, узнав ее PRIMARY KEY, затем вставить запись в другую связанную таблицу используя полученный PRIMARY ID ). А это получается цикл из нескольких тысячей INSERT друг за другом. Как можно оптимизировать этот процесс? Есть одна особенность - первая таблица имеет уникальных индекс помимо PRIMERY KEY (заведомо известный при вставке данных), будет ли хорошей идеей использовать его вместо PRIMERY KEY (это уникальная строка) и тогда проблема пакетной вставке будет решена? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2015, 12:36:30 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
weblloydэти две таблицы связаны между собой по FK (один к одному)Т.е. в одной таблице поле связи - PK, а в другой UNIQUE? или в обеих таблицах UNIQUE? Кто мешает булькнуть в одну таблицу, а потом селект из неё и исходных - во вторую? Но вообще разумнее влить всё во временную таблицу, а оттуда раздать двумя запросами в таблицы, или одним во вьюшку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2015, 15:48:41 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
AkinaКто мешает булькнуть в одну таблицу, а потом селект из неё и исходных - во вторую? А как сделать селект именно тех данных которые только что булькнули ? и сопоставить связи при втором инсерте во вторую таблицу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2015, 17:22:45 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
Вот мои 2 таблицы, player связана с serial через player.serial_id Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. И я делаю парсинг примерно такого файла: 00:16:fb:86:d0:d7 | BW678DS78 00:16:fb:86:d0:c5 | JFH76GJH 00:16:fb:87:af:2e | JKKJHD767 00:16:fb:87:af:36 | STF67JG67 где соответственно надо добавить серийник (BW678DS78) в таблицу serial, мак (00:16:fb:86:d0:d7) в таблицу player и связать их друг с другом. Строк в таких файлах может насчитывать несколько тысяч. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2015, 17:31:37 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
weblloydВот мои 2 таблицы, player связана с serial через player.serial_idНи хрена не связаны. Нет FOREIGN KEY. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2015, 18:38:00 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
AkinaweblloydВот мои 2 таблицы, player связана с serial через player.serial_idНи хрена не связаны. Нет FOREIGN KEY. я тоже за то что создать денормализованную одну таблицу, в неё лить дамп, а из неё раскидать в нормализованные две. да, для этого надо дамп переделать или откуда берутся вообще данные для балк инсерт ЗЫ мы все исходим из того, что ТС вставку делает в существующие данные поэтому не может вставку делать со значениями первичного ключа. ЗЫЗЫ имеено для случая такого майкрософт настоятельно рекомендует уже лет 10 использовать гиуд вкачестве первичного ключа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 15:59:59 |
|
||
|
BULK INSERT при двух связанных таблицах ?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453ЗЫЗЫ имеено для случая такого майкрософт настоятельно рекомендует уже лет 10 использовать гиуд вкачестве первичного ключа.когда лет через 50 начнутся глобальные коллизии гуидов... а впрочем, эмир к тому времени уже скорее всего помрёт :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 06:34:49 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39022714&tid=1832856]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 286ms |

| 0 / 0 |
