[英]PHP Nested for-each loop
$QRYS1 = QUERY;
$QRYS2 = QUERY;
$QRYS3 = QUERY;
$QRYS4 = QUERY;
foreach($QRYS1 as $QRY1)
{
foreach($QRYS2 as $QRY2)
{
if(bla)
{
foreach($QRYS3 as $QRY3)
{
foreach($QRYS4 as $QRY4)
{
}
}
}
}
}
上面的代碼樣式使數據處理非常緩慢。 無論如何,我可以使處理速度更快嗎?
我正在使用多個表及其所有ARRAY()進行聯接和計數的數據。
使用for-each循環獲取表會降低您的頁面速度。 您可以嘗試聯接表並獲取所需的那些字段。
<?php
$TotalCountofDepartmentforSelectedComp_id = Userlog::where('userlogs.company_id', '=', $comp_id)
->where_Between('userlogs.created_at', $startDate, $endDate)
->group_by('userlogs.department_id')
->get(['userlogs.department_id', DB::raw('count(userlogs.user_id) as totaldepartmentcount')]);
$ProductListforSelectedComp_id = Product::join('userlogs', 'userlogs.product_id', '=', 'products.id')
->where('userlogs.company_id', '=', $comp_id)
->distinct()
->get(['products.id', 'products.name']);
$TotalCountCompanyProductWiseinforSelectedComp_id = Product::join('userlogs', 'userlogs.product_id', '=', 'products.id')
->where('userlogs.company_id', '=', $comp_id)
->where_Between('userlogs.created_at', $startDate, $endDate)
->group_by('products.id')
->get(['products.id', DB::raw('count(userlogs.user_id) as totalcompanyproductcountuserwise')]);
$DepartmentListsforSelectedComp_id = Department::where('company_id', '=', $comp_id)->get(
['departments.id', 'departments.name']
);
$TotalCountCompanyDepartmentProductWiseinforSelectedComp_id = DB::query(
'SELECT T1.id, T2.department_id,
COALESCE(T2.totaldepartmentproductcountuserwise, 0) AS totaldepartmentproductcountuserwise
FROM (
SELECT DISTINCT products.id FROM products
INNER JOIN userlogs ON userlogs.product_id = products.id
WHERE company_id = ?
) AS T1
LEFT JOIN (
SELECT department_id, product_id, COUNT(*) AS totaldepartmentproductcountuserwise
FROM userlogs
WHERE company_id = ?
AND created_at BETWEEN ? AND ?
GROUP BY department_id, product_id
) AS T2 ON T2.product_id = T1.id',
array($comp_id, $comp_id, $startDate, $endDate));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.