4 回答

TA貢獻1802條經(jīng)驗 獲得超4個贊
嘗試執(zhí)行以下步驟:
獲取第一個查詢的結果并獲取 id 值,例如 (1,2,3,4,...)..
并在 where 子句之外執(zhí)行帶有
WHERE
條件IN
子句的第二個查詢
喜歡
$sql_items = "SELECT id FROM item_masterfile"; /* this query has 7000 rows */
$result_items = mysqli_query($con,$sql_items);
while ($row_items = mysqli_fetch_row($result_items)) {
$ids[] = $row_items['id'];
}
$sql_qty = "SELECT qty FROM inventory WHERE id IN ".$ids;
/* rest of the code here */
}

TA貢獻1821條經(jīng)驗 獲得超5個贊
嘗試使用限制和偏移量進行批量處理,如下所示
$offset = $i * 5000; // $i is run batch number .. 1, 2, 3 etc in the foreach() loop.
if ($i == 0) {
$offset = "";
}
$result_items="SELECT id FROM item_masterfile LIMIT 5000 OFFSET $offset;";

TA貢獻1836條經(jīng)驗 獲得超5個贊
您問題中的代碼顯示表之間存在 one_to_one 或 one_to_many 關系,因此使用分頁和 join 語句可以解決該問題。檢查下面的代碼希望有幫助
$sql = "
SELECT im.id, i.qty
FROM item_masterfile AS im
JOIN inventory AS i ON
im.id = i.item_masterfile_id
LIMIT $offset, $limit
";
$result_items = mysqli_query($con,$sql);
您可以在代碼中動態(tài)設置 $offset 和 $limit 并繼續(xù)...

TA貢獻1827條經(jīng)驗 獲得超8個贊
您應該收集數(shù)組中的所有 id,然后使用 IN 運算符將所有 id 一次性傳遞給查詢,而不是使用循環(huán)并在其中提供 id。
示例:SELECT qty FROM inventory WHERE id IN (1,2,3,4,5)
. 通過這樣做,您可以避免循環(huán),并且您的代碼不會因超時錯誤而退出。
或者
您可以在主查詢中使用子查詢來實現(xiàn)相同的效果
例子:SELECT qty FROM inventory WHERE id IN (SELECT id FROM item_masterfile)
- 4 回答
- 0 關注
- 146 瀏覽
添加回答
舉報