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 записей - уже существенно долго. В связи с этим возник вопрос - правильно ли составлен запрос на обновление данных ?