Народ столкнулся с проблемой производительности. Мне нужно из внешнего файла загружать например 50000 тыс. заявок, а также возможность откатывать эти загрузки. 1)загрузил 2)понял что не то загрузил 3)откатил Причем пользователей загружающими данные может быть несколько. С загрузкой все норм 50000 заявок загружаются ~20сек. Вот код: PHP: for() { $insert=mysql_query("insert into records(adress) value('$adress');"); } Заявки записываются и им присваивается auto_increment(id). Что бы иметь возможность откатывать изменения, нужно эти данные фиксировать в другой таблице logs. Вот код: PHP: for() { $insert=mysql_query("insert into records(adress) value('$adress');"); $select_id_rec=mysql_query("select MAX(id) from records;"); $data_id_rec=mysql_fetch_row($select_id_rec); $insert=mysql_query("insert into logs(id_record,id_c,date,time) value('$data_id_rec[0]','$date','$time');"); } Но походу select MAX(id) from records заставляет все тормозить. И загрузка занимает ~30мин. Т.е логика такая Записываем данные в таблицу records Ишем ID только что записавшеяся заявки он как раз и будет MAX(id) для текущего проходя цикла Получая этот ID пишем его в таблицу logs в поле record_id. Подскажите как ускорить процесс или как можно по другому это реализовать. LAST_INSERT_ID() тоже низкую производительность дает.
если перезаливается вся таблица, то можно создавать новую, старую херить, новую переименовывать в старую. вобще это странно, что надо грузить много всякого извне через файл...
бред. все записи надо добавлять одним запросом. Но лучше LOAD DATA INFILE По теме - грузить в другую таблицу, возможно временную, проверять, потом добавлять в основную. Добавлять в оснвную, проверять, потом удалять - неверная логика. Но если так надо - вставляешь в таблицу с доп полем insert_date=$t а потом одним запросом в лог where insert_date=$t