В настоящее время я создаю пакетный скрипт, который вызывает несколько скриптов 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 наборов строк.