SQL\laravel обновление данных через временную таблицу

Участок кода Создает временную таблицу temp_product_properties

Schema::create('temp_product_properties', function (Blueprint $table) {
            $table->increments('id');
            $table->string('shop_code')->index();
            $table->string('product_code')->index();
            $table->decimal('price_stock', 10, 2);
            $table->temporary();
            });

В эту таблицу записывается относительно большой объем строк (800 000+ ) Далее стоит задача обновить данные в основной таблице product_properties . Обновить необходимо поле price_stock , Нужная запись находится по shop_code и product_code

Для обновления используется "сырой" запрос

    UPDATE product_properties
            join temp_product_properties
            on temp_product_properties.shop_code = product_properties.shop_code
            AND temp_product_properties.product_code = product_properties.product_code
            SET product_properties.price_stock = temp_product_properties.price_stock
            WHERE product_properties.shop_code = temp_product_properties.shop_code
            AND product_properties.product_code = temp_product_properties.product_code

На тестах с небольшим количеством данных все относительно быстро отрабатывает. Но при увеличении до условных 100 000 записей - уже существенно долго. В связи с этим возник вопрос - правильно ли составлен запрос на обновление данных ?


Ответы (0 шт):