我在两个不同的服务器上有两个数据库。
在这两个数据库中,我有两个同名“orders”的表((见图片)
在database2的orders表中有一些我需要的信息,例如“import”和“shipping”列。
为了连接两个表,我使用了两个foreach循环:
<?php
$all=array();
// get 100 Records from 30 000 Records (Database1) because i work with pagination
$ordersFromDB1="SELECT * FROM orders LIMIT 0,100";
// get all 10 0000 Records for checking (Database2)
$ordersFromDB2="SELECT * FROM orders";
foreach ($ordersFromDB1 as $order1) { //100 times
foreach ($ordersFromDB2 as $order2) { //10 000 times
if ($order1['ID_order']==$order2['ID_order']) {
//put column "import" from order2 in order1
$order1['import']=$order2['import'];
// put column "shipping" from order2 in order1
$order1['shipping']=$order2['shipping'];
}
}
$all[]=$order1;
}
//foreach loop will be execute 100 * 10 000 = 1 000 000 times
// $all stoke the two orders table (orders1,orders2) in one array
这段代码工作得很好,但是如果看到foreach循环将执行100*10000=1000000次,我认为这不是一个好主意。
这个问题有更好的解决办法吗?
1条答案
按热度按时间20jt8wwn1#
假设两个顺序数组的格式都是:
你可以这样做:
这应该需要
linear
关于订单数量的时间。编辑:将返回的db行转换为建议的格式也需要线性时间,因此仍然比初始解决方案效率更高。