現在、複数の PHP スクリプト (CodeIgniter を使用する) を呼び出して 1 つの DB からデータを取得し、結果を操作して別の DB に結果を挿入するバッチ スクリプトを作成しています。まず、これが仕事に最適なツールではないことはわかっていますが、今すぐ実行する必要があります。しかし、話題に戻ると、スクリプトは正常に実行されており、1 つのメソッドを除いてパフォーマンスはかなり良好です。最初の DB からデータを取得し、2 番目の DB に挿入します。約20列35000行のテーブルです。
これらの結果を挿入するために単純な$this->db->insert_batch('tablename', $insertdata);
関数を使用していますが、どういうわけかスクリプトの実行には約 15 分かかります...
問題は、このプロセスを最適化する方法です。
前もって感謝します
編集
データが挿入される DB である 2 番目の DB にテーブルを作成するために使用するクエリを次に示します。
CREATE TABLE IF NOT EXISTS `invoices` (
`invoice_number` varchar(40) NOT NULL,
`shippinglist_number` varchar(40) DEFAULT NULL,
`shippinglist_line` varchar(255) DEFAULT NULL,
`customer_id` varchar(5) NOT NULL,
`deptor` varchar(5) NOT NULL,
`vat_number` int(255) DEFAULT NULL,
`invoice_date` date NOT NULL,
`expire_date` date NULL DEFAULT NULL,
`currency_code` varchar(10) NOT NULL,
`subtotal` decimal(19,4) NOT NULL,
`vat` decimal(19,4) NOT NULL,
`total` decimal(19,4) NOT NULL,
`qty` int(10) NOT NULL,
`partcode` varchar(255) NOT NULL,
`description` text,
`price` decimal(19,4) NOT NULL,
`pieces_per` int(10) NOT NULL,
`article_customer` varchar(255) DEFAULT NULL,
`reference_customer` varchar(255) DEFAULT NULL,
`sales_line_1` text,
`sales_line_2` text,
`sales_line_3` text,
`memo` text,
KEY `invoice_number` (`invoice_number`,`customer_id`,`deptor`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
クエリは通常の挿入ですが、35000 行が 100 行セットに分割されます。