2017-10-18 12 views
1

다음 쿼리를 하나씩 최적화해야하는 문제가있었습니다. 함수를 만들 수 있습니까?하나의 쿼리에서 3 개의 테이블에 데이터 삽입/업데이트 joomla

$query = "UPDATE #__sbc SET payment_reference ='".$payref."', payment_status = '".$state."' WHERE reference ='".$ref."'"; 
       $db->setQuery($query); 
       $db->query(); 
       //update allforms table 
$query = "UPDATE #__allforms SET payment_reference ='".$payref."', payment_status = '".$state."' WHERE reference ='".$ref."'"; 
       $db->setQuery($query); 
       $db->query(); 
$query = "UPDATE #__printxml SET payment_reference ='".$payref."', payment_status = '".$state."' WHERE reference ='".$ref."'"; 
       $db->setQuery($query); 
       $db->query(); 
+0

함수를 만들면 왕복 3 회가 아닌 데이터베이스 왕복 1 회만 최적화되므로 많은 결과를 얻지는 못할 것입니다. 더 나은 최적화는 색인이 생성되지 않으면 모든 테이블의 열 참조를 인덱싱하는 것입니다. –

+0

1 쿼리로 변경하는 방법은 어떻습니까? 이 작업을 수행하는 방법? –

답변

0

3 개 쿼리를 최적화하여 무엇을 의미합니까 설명 당신은 반 열을 추가하여 쿼리를 결합 할 수 있습니다 (;) 쿼리의 끝. 예를 들면 다음과 같습니다.

UPDATE TABLE1 SET `field1`=2 WHERE `id`=5;UPDATE TABLE1 SET `field1`=3 WHERE `id`=6; 

사실 검색어를 조합하면 성능이 크게 향상되는 경우는 거의 없습니다.

1

최적화로 여기에 무슨 뜻인지 명확하게 이해하지 못했습니다. 오해한다면 미안하지만 어쩌면 당신은 이런 뜻인가요? 하나

$params=array("sbc","allforms","printxml"); 

foreach ($params as $param){ 

    $query = "UPDATE #__".$param." SET payment_reference ='".$payref."', payment_status = '".$state."' WHERE reference ='".$ref."'"; 
    $db->setQuery($query); 
    $db->query(); 

}