Проблема в том, что тормозят запросы...

Dreamer76

Through thorns
Прошу помощи

Проблема в том, что тормозят запросы..

Выборка реализована так:


PHP:
<?
while ($row = mysql_fetch_array($result2,MYSQL_ASSOC)) :
?>


<?
	$kolf = $row["idf"];

	$sql = "select model.idm, 
		  model.idf,
		  unit.idm, 
		  unit.uniq from model, unit 
		  where model.idf = $kolf and model.idm = unit.idm group by unit.uniq";
	$result = mysql_query($sql33); 

	$rez = mysql_num_rows($result33);
?>

		<tr>
		<td class=menu1 bgcolor=silver><b><a href=index.php?page=models5&firma=<? print($row['idf']);?> class=menu1><? print($row['name']);?></a></td>
		<td class=menu1><? echo $rez; ?></td>
		</tr>

<?
endwhile;
?>
Тут выводится таблица, в которой перечень фирм есть [name] и количество единиц продукции по каждой фирме [rez].

При открытии все тормозит безбожно :(

Прошу сказать, как лучше организовать цикл в данном случае..
 

Фанат

oncle terrible
Команда форума
для начала узнай, сколько времени выполняется сам запрос
 

Dreamer76

Through thorns
я так понимаю, что тормоза из-за того, что внутри цикла стоит запрос на количество единиц [rez] и цикл каждый раз отрабатывает этот запрос под каждую позицию. надо как-то вынести его, но как.. и стоит ли..
 

Dreamer76

Through thorns
sql2 - 0.0018 sec
внутренний (sql) - 0.0236 sec

-~{}~ 27.05.05 17:06:

как одним? у меня цикл строит таблицу, в которой единицы продукта идут один за другим в одной ячейке, а справа от каждого продукта (в другой) стоит количество единиц этого продукта. соотв. для каждого продукта отрабатывается запрос на количество единиц в нем. как же одним?
 

Фанат

oncle terrible
Команда форума
и чо?
какие проблемы?
вот смотри - в соседнем топике товарищ самостоятельно догадался, как сделать одним

-~{}~ 27.05.05 17:08:

http://phpclub.ru/talk/showthread.php?s=&threadid=67563
 

Dreamer76

Through thorns
мне надо посчитать сколько единиц в модели.
как я могу в одном цикле сделать и перечень типов и количество моделей в нем?
 

Фанат

oncle terrible
Команда форума
так же, как и все остальные: используя ситнаксис SQL, очевидно
 

Dreamer76

Through thorns
Фанат, помоги.. не справлюсь. Я уже без книг делаю все.. но вот тут у меня затык вышел :(
 

Фанат

oncle terrible
Команда форума
$sql = "select model.idm,
model.idf,
unit.idm,
unit.uniq from model, unit
where model.idf = $kolf and model.idm = unit.idm group by unit.uniq";
у тебя вся эта борода только для того, чтобы посчитать колимчество записей в таблице unit?
Тебюе не кажется, что это слишком сложновато?
 

Dreamer76

Through thorns
первый sql выводит перечень моделей (из table1) по выбранной фирме.
выдается в таблице по while.

второй (который ты выделил) выводит количество единиц (из
table2) привязанных к каждой модели из (table1).
потому я его и вставил в цикл while, чтобы каждая модель отрабатывалась и к ней присваивалось то кол-во единиц, которое содержится в unit и соотв. каждой модели.
 

Фанат

oncle terrible
Команда форума
и какое этот текст имеет отношение к моему вопросу?

-~{}~ 29.05.05 12:24:

первый sql выводит перечень моделей
у тебя в таблице firm лежат модели?!
а в таблице model что тогда лежит?
 

Dreamer76

Through thorns
PHP:
		$sql = "SELECT firm.idf, firm.name, model.idf, model.idm, model.idt, tip.tip1, tip.tip2, unit.idm
FROM firm, model, tip, unit
WHERE model.idt = $tip AND model.idf = firm.idf
GROUP  BY firm.idf
ORDER  BY  firm.name ASC";

	$result = mysql_query($sql);
	$sql2 = "SELECT firm.idf, firm.name, model.idf, model.idm, model.idt, tip.idt, tip.tip1, tip.tip2, unit.idm
FROM firm, model, tip, unit
WHERE model.idt = $tip AND model.idf = firm.idf and model.idt = tip.idt
GROUP  BY firm.idf
ORDER  BY  firm.name ASC";
	$result2 = mysql_query($sql2);

	$row2 = mysql_fetch_object($result2);
	$dd1 = $row2->tip1;
	$dd2 = $row2->tip2;


		<table border=0 cellspacing=3 width=100% cellpadding=3>
		<tr>
		<td bgcolor=#454545 class=menu>Фирма</td>
		<td width=50 nowrap bgcolor=#454545 align=center class=menu>Единиц</td>
		</tr>


                <?
while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) :
?>


<?

	$kolf = $row["idt"];
	$kolf2 = $row["idf"];


	$sql2 = "select model.idm, 
		  model.idt,
		  unit.idm,
		  model.idf,
		  unit.uniq from model, unit 
		  where model.idt = $kolf and model.idf = $kolf2 and model.idm = unit.idm group by unit.uniq";
	$result2 = mysql_query($sql2); 

	$rez2 = mysql_num_rows($result2);


?>



		<tr>
		<td class=menu1 bgcolor=silver><b><font color=maroon><a href=index.php?page=models4&firm=<?print($row['idf']);?>&tip=<?print($row['idt']);?> class=menu1><? print($row['name']);?></a></font></td>
		<td class=menu1><? echo $rez2; ?></td>
		</tr>


<?
endwhile;
?>


		</table>
-~{}~ 29.05.05 12:27:

Вот код. Как ты думаешь, реально объединить ВСЕ в один запрос?
 

Фанат

oncle terrible
Команда форума
ни хрена не понял.
а что там наверху у тебя за дубль такой?
 

Dreamer76

Through thorns
ступил. вроде. вопрос.. что по твоему сильно "убыстрит" вывод по запросу исходя из этого кода?

что по твоему создает большой простой по времени в этом скрипте?
 
Сверху