在我连接到mysql的php脚本中,我必须在同一个脚本中查询2个数据库以获取不同的信息.更具体地说,一个数据库中的Faxarchives和另一个数据库中的Faxusers.
在我的代码中,我查询faxusers然后foreach用户,我查询Faxarchives以获取用户历史记录.
我可能会这样做:
function getUserarchive( $userid) { $out= ""; $dbname = 'Faxarchive'; $db = mysql_select_db($dbname); $sql = "select sent, received from faxarchivetable where userid = '" . $userid . "'"; if ( $rs = mysql_query($sql) { while ($row = mysql_fetch_array($rs) ) { $out = $row['sent'] . " " . $row['received']; }//end while }//end if query return ($out); }//end function $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); $dbname = 'Faxusers'; $db = mysql_select_db($dbname); $sql="select distinct userid from faxuserstable"; if ( $rs = mysql_query($sql) { while ($row = mysql_fetch_array($rs) ) { $out = $row['userid'] . ":" . getuserarchive($row['userid']); }//end while }//end if query
我猜测每个用户的数据库之间的切换导致了缓慢.无论如何我怎样才能提高处理速度?
提前致谢.
你有几个问题.首先,你的函数getUserarchive会一直拉回所有行.您似乎忘记将SQL限制为仅限特定用户标识.这是你的速度问题的一个重要原因.
另一种选择是传入您感兴趣的所有用户ID.重写SQL作为SELECT发送,接收FROM faxarchivetable WHERE userid IN(...),这意味着您有一个选择从您的faxarchivetable拉回所有信息,而不是每个用户ID一个.
最后,如果两个数据库都在同一个MySQL服务器上,您只需执行一次选择即可获取所有信息:SELECT Faxusers.faxuserstable.userid,sent FROM received Faxusers.faxuserstable JOIN Faxarchive.faxarchivetable ON Faxusers.faxuserstable.userid = Faxarchive.faxarchivetable.userid