我构建了一种机制,将查询结果格式化为具有特定模式的数组。 例如:
<?php
// Pattern
$aPattern = array(
'cust_id' => array(
'@detail' => array(
'@name' => '%{forename} {name}',
'@company' => 'company'
),
'@orders_total' =>
array('article' => 'qty')
)
);
// Query
$sQuery = "SELECT `cust`.*, `order`.`article`, SUM(`quantity`) AS qty
FROM `cust` LEFT JOIN `order` ON `cust`.`id` = `order`.`cust_id`
GROUP BY `cust`.`id`, `order`.`article`";
// Run query and set fetch mode
$oStatement = Data::query($sQuery)->setFetchPattern($aPattern);
// Fetch results
$aRes = $oStatement->fetchAll();
它工作正常,但在格式化大量行(&gt; 5000)时需要花费太多时间。 我一直在寻找可以更有效地完成工作但没有成功的现有解决方案。 在发布代码以询问是否有人可以帮助我改进它之前,有人知道是否有PHP类或类似已经执行此类工作的类吗?
提前致谢,对任何StackOverflow误用表示抱歉
答案 0 :(得分:0)
最后我发现了问题。我正在为结果集中找到的每一行运行fetch函数,每次我将结果合并到全局结果数组时,显然合并步骤花费了太多时间(resursive函数)。我只修改了fetch函数,以便在递归函数中完成全局结果数组而无需合并。现在它正在快速工作:)