我有两个表,每个表都有 160k+ 行。两者之间共享一些 UUID。我正在“新”表上使用 foreach 循环,并使用嵌入式 foreach 搜索“旧”表。当 UUID 匹配结束时,“旧”表将使用“新”表中的数据进行更新。
两个表的 ID 都有一个索引。
我的问题是这个操作非常耗时;有谁知道一种更有效的方法来搜索匹配的 UUID?旁注:我们正在使用 PHP 5.3 的 MySQLi 扩展
进出口代码:
$oldCounter = 0;
$newCounter = 1;
//loop
foreach( $accounts as $accKey=>$accValue )
{
echo( "New ID - " . $oldCounter++ . ": " . $accValue['id'] . "\n" );
foreach( $accountContactData as $acdKey=>$acdValue )
{
echo( "Old ID - " $newCounter++ . ": " . $acdValue['id'] . " \n" );
if( $accValue['id'] == $acdValue['id'] && (
$accValue['phone_office'] == "" || $accValue['phone_office'] == NULL || $accValue['phone_office'] == 0 )
){
echo("ID match found\n");
//when match found update accounts with accountsContact info
$query = '
UPDATE `accounts`
SET
`phone_fax` = "' . $acdValue['fax'] . '",
`phone_office` = "' . $acdValue['telephone1'] . '",
`phone_alternate` = "' . $acdValue['telephone2'] . '"
WHERE
`id` = "' . $acdValue['id'] . '"
';
echo "" . $query . "\n\n";
$DB->query($query);
break 1;
}
}
}
unset($oldCounter);
unset($newCounter);
先感谢您。