我目前正在创建一个批处理脚本,它调用多个 PHP 脚本(使用 CodeIgniter)从一个数据库中提取数据,处理结果并将结果插入另一个数据库。首先,我知道这可能不是这项工作的最佳工具,但现在必须这样做。但回到主题,脚本运行良好,性能相当不错,除了一种方法。它从第一个数据库中提取数据,并将其插入到第二个数据库中。这是一个大约有 20 列和 35000 行的表。
我正在使用一个简单的$this->db->insert_batch('tablename', $insertdata);
函数来插入这些结果,但不知何故,脚本需要大约 15 分钟才能执行......
问题是,如何优化这个过程?
提前致谢
编辑
这是我用来在第二个数据库上创建表的查询,即数据插入的数据库。
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 个行集。