Как вставить 1M+ строк в MySQL?
LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test
https://dev.mysql.com/doc/refman/8.0/en/load-data.html
Или если из дампаmysql -u dbLogin -p dbName < somefile.sql
Реализовал через LOAD DATA INFILE,  но c потреблением памяти стало еще хуже.
Теперь на 50000 строк приходится столько же, как раньше на 250000.
Код:$dataString .= "$gs_id|$available|$shop_id|$product_key|$article|$category_id|$picture|$thumbnail|$original_picture|$name|$description|$brand_id|$model|$old_price|$price|$url|$destination_url\n";
$dataPath = str_replace('\\', '/', Yii::$app->basePath)  . '/products/products.txt';
$dataFile = fopen($dataPath, 'w');
fwrite($dataFile, $dataString);
fclose($dataFile);
unset($dataString, $dataFile);

Yii::$app->db->createCommand('SET GLOBAL local_infile = true;')->execute();
Yii::$app->db->createCommand("
            LOAD DATA LOCAL INFILE '$dataPath'
            INTO TABLE product
            FIELDS TERMINATED BY '|'
            (
                gs_id,available,shop_id,product_key,article,category_id,
                picture,thumbnail,original_picture,name,description,brand_id,
                model,old_price,price,url,destination_url
            )
 ")->execute();