在我连接到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
Run Code Online (Sandbox Code Playgroud)
我猜测每个用户的数据库之间的切换导致了缓慢.无论如何我怎样才能提高处理速度?
提前致谢.
你有几个问题.首先,你的函数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