@khodos_dmitry

Почему так медленно сохраняются данные в CSV?

Сохраняю с помощью функции:
function put_ten() {
	global $link;
	$query = "SELECT `item`.`id`, `item`.`name`, `item`.`cat1`, `item`.`cat2`, `item`.`cat3`, `item`.`cat4`, `item`.`price`, `img`.`source` FROM `item` JOIN `img` ON `item`.`id` = `img`.`item_id` WHERE `item`.`inserted` = 0 LIMIT 1000";
	$result = mysqli_query($link, $query) or die(mysqli_error($link));
	for ($i = 1; $data = mysqli_fetch_assoc($result); $i++) {
		$query = "SELECT `name`, `value` FROM `param` WHERE `item_id` = {$data['id']}";
		$result_param = mysqli_query($link, $query) or die(mysqli_error($link));
		$params = '';
		while($data_param = mysqli_fetch_assoc($result_param)) {
			$params .= $data_param['name'].': '.$data_param['value'].';';
		}
		$csv .= $data['name'].';'.$data['cat1'].';'.$data['cat2'].';'.$data['cat3'].';'.$data['cat4'].';'.$data['price'].';'.'http://armatura-truba.ru/'.$data['source'].';'.$params."\r\n";
		file_put_contents('items.log', $i."\t".date("i:s")."\r\n", FILE_APPEND);
	}
	file_put_contents('items.csv', $csv, FILE_APPEND);
}

Иногда получается, что сто записей за секунду сохранятся, иногда за полторы, две минуты (чаще всего). Почему так? И есть ли способ быстрее сохранить выборку из разных таблиц ?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
@khodos_dmitry Автор вопроса
Поставил индексы на `item_id` и все стало довольно таки быстро.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
function put_ten() {
  global $link;
  $query = "SELECT `item`.`id`, `item`.`name`, `item`.`cat1`, 
                `item`.`cat2`, `item`.`cat3`, `item`.`cat4`, 
                `item`.`price`, `img`.`source`, `param`.`name` pname, `param`.`value` pvalue
          FROM `item` 
          JOIN `img` 
          ON `item`.`id` = `img`.`item_id` 
          JOIN `param` 
          ON `item`.`id` = `param`.`item_id` 
          WHERE `item`.`inserted` = 0 
          LIMIT 1000";
// дальше 1 циклом нормально пройтись
}


UPD: Без индексов было... БЕЗ ИНДЕКСОВ, КАРЛ!!! Как так то?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы