2010-07-01 3 views
0

Мне нужно работать с несколькими базами данных, а ниже - мой текущий код. Следующий код кажется очень медленным и имеет проблемы с несколькими соединениями, когда я просматриваю список соединений mysql.php и mysql help, работа с несколькими базами данных

Так кто может сообщить мне, что не так с кодом, и помочь мне исправить проблемы и повысить производительность.


$dbHost="localhost"; 
$dbUser="user"; 
$dbPass="pass"; 
$db_1="database1"; 
$db_2="database2"; 

$connect=mysql_connect($dbHost, $dbUser, $dbPass); 
if (!$connect) 
die("Error Connecting to MYSQL"); 
mysql_select_db($db_1, $connect) 
or die("Error Connecting to Database 1"); 

$remainingDataCount="25000"; 

$getData=mysql_query("select * from TABLE where FIELD1='data' && FIELD2>'date' && FIELD3='NO'"); 
$loop=0; 
while ($eachData=mysql_fetch_array($getData)) { 
    $loop++; 
    $UNIQUE_ID=$eachData['id']; 
    $UNIQUE_DATA1=$eachData['FIELD4']; 
    $DATA2=$eachData['FIELD5']; 

    $responseMessage="some text here"; 
    $currentTimeStamp=date('Y-m-d H-i-s'); 

    if ($loop>$remainingDataCount) { 
     break; 
    } else { 

     $insertQuery=mysql_query("insert into ".$db_2.".TABLE values('', '$UNIQUE_DATA1', '$DATA2', '$responseMessage', '$currentTimeStamp')"); 

     if ($insertQuery==true) { 

      $updateQuery=mysql_query("update ".$db_1.".TABLE set FIELD1='YES', FIELD2='$responseMessage', FIELD3='$currentTimeStamp' where FIELD4='$UNIQUE_DATA1'"); 
      if ($updateQuery==false) { 
       mysql_query("delete from ".$db_2.".TABLE where FIELD1='$UNIQUE_DATA1'"); 
      } 

     } 
    } 

} 

ответ

2

Открывает два соединения с mysql_connect(), выберите нужную базу данных на оба, а затем использовать дополнительный параметр идентификатора связи с mysql_query(), чтобы выбрать базу данных для выполнения ваших запросов на.

mysql_query (string $query [, resource $link_identifier ]) 

Edit: Кроме того, вы можете захотеть взглянуть на Mysqli (ee.php.net/manual/en/book.mysqli.php), так что вы можете использовать подготовленные заявления, которые, возможно, ускорить зацикленная вставка резко.

1

Операторы SQL в цикле - это проблема производительности номер один. Я думаю, что вы могли бы использовать INSERT SELECT вместо петли

Смежные вопросы