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

  • Автор темы Автор темы bobo
  • Дата начала Дата начала

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;		
		
}

В частности интересует часть, выделенная комментарием.

Заранее благодарю!
 
Смотря что вы подразумеваете под «оптимизировать». Можно выделенную часть выполнить одним запросом при помощи JOIN, но будет ли это оптимизацией для вас — хз.
 
mysql 5 поддерживает подзапросы
select field1,(select field2 from table2 where table2.id=(select id3 from table3 where table3.id=table1.referField)) as field2a from table1
но не факт что будет быстрее ;(
 
Сверху