在我连接到 mysql 的 php 脚本中,我必须在同一个脚本中查询 2 个数据库以获得不同的信息。更具体地说,一个数据库中的 Faxarchives 和另一个数据库中的 Faxusers。
在我的代码中,我查询 faxusers,然后为每个用户查询 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。这是造成速度问题的主要原因。
另一种选择是传递您感兴趣的所有用户 ID。将 SQL 重写为 SELECT sent, received FROM faxarchivetable WHERE userid IN (...),这意味着您可以选择从中提取所有信息您的传真存档表,而不是每个用户 ID 一个。
最后,如果两个数据库都在同一台 MySQL 服务器上,您只需执行一次选择即可提取所有信息: SELECT Faxusers.faxuserstable.userid, sent, received FROM Faxusers.faxuserstable JOIN Faxarchive.faxarchivetable ON Faxusers.faxuserstable.userid = Faxarchive.faxarchivetable.userid
关于php - MySQL PHP : switching between mysql databases is slow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/309402/