Многострочный insert, посоветуйте в каком месте оптимизировать функцию для ускорения работы скрипта

aspire

Новичок
Вот код моей функции
PHP:
	/**
	 * Записывает множество строк. Если строк более 1000, то занесение в бд происходит порциями по 1000 записей.
	 * @param $table string Наименование таблици
	 * @param $data array Ассоциативный массив в котором в первом элементе массива содержатся наименования столбцов, в осталных их значения
	 * @return boolean Если весь прайс записался то возвращаем TRUE иначе FALSE
	 */
	public function insertManyRows($table, array $data){
		$result = true;
                // Проверяем что нам дали не только названия столбцов но и сами данные
		if(count($data) > 1){
			$tmpCols = array_splice($data, 0, 1);
			foreach($tmpCols as $val){
				// Проставлляем `` вокруг наименований столбцов
				$cols[] = $this->_setQuoteIdentifier($val);
			}
			$cols[] = $this->_setQuoteIdentifier($col);

			while(count($data) != 0){
				$sql = "INSERT INTO "
						. $this->_setQuoteIdentifier($table)
						. ' (' . implode(', ', $cols) . ') VALUES';
				$tempMass = array_slice($data, 0, 1000, TRUE);
				array_splice($data, 0, 1000);
				$count = count($tempMass);
				for($i = 0; $i < $count; $i++){
                 $vals = array();
					foreach($tempMass[$i] as $val){
						// Проставлляем '' вокруг переменных и прводим екранирование спецсимволов
						$vals[] = $this->_setQuoteIdentifier($val);
					}
					if($count - 1 === $i){
						$sql .= ' (' . implode(', ', $vals) . ')';
					} else{
						$sql .= ' (' . implode(', ', $vals) . '),';
					}
				}
				if(!$this->query($query)){
					$result = false;
				}
			}
		} else {
			$result = false;
			//тут вывод ошибки если недостаточное количество строк в массиве
		}
		return $result;
	}
Буду рад любым советам. Заранее спасибо.
 

HEm

Сетевой бобер
кстати там есть момент про тысчонку записей ;)
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
HEm там треть советов тупые, треть сомнительные, после 10го читать дальше не могу
 

aspire

Новичок
grigori был прав, в статье куча всего не по теме, там только один пункт про insert и той нечего полезного не расказал.
 
Сверху