Необходимо вставить в таблицу продуктов из более чем одной таблицы с динамическим идентификатором пользователя - PullRequest
0 голосов
/ 01 марта 2019

У меня есть 3 таблицы пользователи , продукты и temp_table .я импортировал файл xlsx, содержащий 10000 записей в temp_table .Теперь я должен вставить эти записи в таблицу products .и здесь я должен сохранить user_id из таблицы users в таблицу products .Примечание: user_id является динамическим (т.е. в файле xlsx есть столбец с именем email, и я создал нового пользователя для их электронной почты).поэтому в products таблица user_id будет вставлена ​​динамически.Я использовал запрос ниже, но это занимает слишком много времени.и иногда мой MySQL блокируется.

INSERT INTO products
        (user_id,
        brand_id,
        points_discount,
        amount,
        sub_total,
        added_on)
        SELECT users.user_id, 
            brand_id,
            discount,
            amount,
            sub_total,
            added_on
        FROM temp_table
        INNER JOIN users 
        ON email = users.email;

Пожалуйста, помогите мне решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Я бы создал для этого ремесленную команду , которая запрашивает определенное количество записей из temp_table (где я бы добавил флаг / столбец processed с логическим значением) и либоЗапланируйте его запуск каждую минуту или запускайте его из терминала самостоятельно.Как запросить 10000-20000 записей / прогон (может быть больше, зависит от сервера и среды) и обработать его.

0 голосов
/ 01 марта 2019

Создать индекс для email столбца таблиц temp_table и users.Также убедитесь, что оба столбца имеют одинаковые datatype

ALTER TABLE temp_table ADD KEY `idx_email` (`email`);

ALTER TABLE users ADD KEY `idx_email` (`email`);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...