Оптимизация запроса. Нупский вопрос.

bobo

Новичок
Привет.
Как оптимизировать следущий код:

PHP:
public function getSmList() {
		
	$db = Connect::dbConnect();

	$queryType = $db -> query("SELECT `id`, `smidobj`, `smnum`, `crdate`, `cruser`, `arnd`, `notpay`, `rursum`, `arnditsum` FROM `smetytb` WHERE `idmontazh` = '".$db -> real_escape_string(self::smType())."' ORDER BY `smnum` DESC;");
		
		while ($arrayType = $queryType -> fetch_assoc()) {



//-----------------------------------------------------


				
			$queryObjNum = $db -> query("SELECT `objidcl`, `objstreet`, `objhouse`, `objapartaments`, `objnum` FROM `objects` WHERE `id` = '".$arrayType['smidobj']."' LIMIT 1;");
			$arrayObjNum = $queryObjNum -> fetch_assoc();
								
			$queryClName = $db -> query("SELECT `clname` FROM `clients` WHERE `id` = '".$arrayObjNum['objidcl']."' LIMIT 1;");
			$arrayClName = $queryClName -> fetch_assoc();
								
			$queryObjStreet = $db -> query("SELECT `street` FROM `street` WHERE `id` = '".$arrayObjNum['objstreet']."' LIMIT 1;");
			$arrayObjStreet = $queryObjStreet -> fetch_assoc();
								
			$queryUserName = $db -> query("SELECT `fullname` FROM `users` WHERE `id` = '".$arrayType['cruser']."' LIMIT 1;");
			$arrayUserName = $queryUserName -> fetch_assoc();
								
			$querySmType = $db -> query("SELECT `type` FROM `userstype` WHERE `id` = '".$db -> real_escape_string(self::smType())."' LIMIT 1;");
			$arraySmType = $querySmType -> fetch_assoc();



//-----------------------------------------------------

					
			
			($arrayType['arnd'] == "1") ? $arndNotPay = "АР." : 
				(($arrayType['notpay'] == "1") ? $arndNotPay = "БМ." : $arndNotPay = "");
			($arrayObjNum['objapartaments']) ? $address = $arrayObjStreet['street']." ".$arrayObjNum['objhouse']." - ".$arrayObjNum['objapartaments'] : $address = $arrayObjStreet['street']." ".$arrayObjNum['objhouse'];
				
			$data[] = array(
								
				"id" => $arrayType['id'],
				
				"smNum" => $arrayType['smnum']." - ".$arraySmType['type'],
				
				"summAll" => $arrayType['rursum'],
				
				"arndNotPay" => $arndNotPay,
				
				"arndNotPaySumm" => $arrayType['arnditsum'],
				
				"clName" => $arrayClName['clname'],
				
				"objNum" => $arrayObjNum['objnum'],
				
				"address" => $address,
				
				"crDate" => $arrayType['crdate'],
				
				"userName" => $arrayUserName['fullname']
				
				);
				
		}

	Connect::dbClose();
	return $data;		
		
}
В частности интересует часть, выделенная комментарием.

Заранее благодарю!
 

radioheaded

PHP нуб
Смотря что вы подразумеваете под «оптимизировать». Можно выделенную часть выполнить одним запросом при помощи JOIN, но будет ли это оптимизацией для вас — хз.
 

antson

Новичок
Партнер клуба
mysql 5 поддерживает подзапросы
select field1,(select field2 from table2 where table2.id=(select id3 from table3 where table3.id=table1.referField)) as field2a from table1
но не факт что будет быстрее ;(
 
Сверху