我从一个查询结果中获取45000个值,并且需要使用此值进行第二次查询,但由于数组的大小,执行所需的时间超过30秒,因此获取错误:
错误:超出最大执行时间30秒
有没有其他方法可以快速执行此数据库数据计算,或者我应该计算数据并将其保存在另一个表中以便随时显示
查询:
$query = $em->createQuery('SELECT DISTINCT(u.username) as mobile FROM sessionTable u WHERE u.accesspoint IN (?1) ');
$query->setParameter(1, $accesspoint);
$result = $query->getResult();
$count = count($result);
$i = 0;
$numbers = array();
foreach ($result as $value) {
$numbers[$i] = $value['mobile'];
$i++;
}
dump(count($numbers)); //----> Output is 48567 --successful
$Users = $this->getDoctrine()
->getRepository('AcmeDataBundle:User')
->findByNumber($numbers);
----Error Occurs Here------
dump(count($Users));
die();
Run Code Online (Sandbox Code Playgroud)
我正在使用symfony 2.0框架,doctrine 2.0
更新:考虑我在同一个数据库中有5个表,即.1-用户2- googleData 3- facebook数据4-yahooData 5-会话
当用户登录我的应用程序时,我从一个或多个社交个人资料数据中收集性别信息,并保存在该特定表格中
现在我要计算所有使用过多次会话的男性用户:女性比例,
对于这种情况,它很难计算男性:多个表的女性比例.我觉得有一个解决方案,如果我直接在会话表中添加Gender列,那么使用FK还是其他任何更好的方法?
如果您必须传递1000个值,请不要介意100,000个值,这可能意味着您在设计查询时遇到问题.数据必须来自某个地方,如果它来自数据库,使用连接或子查询将是一件简单的事情.如果它来自外部源,它可以进入临时表.
简而言之:是的,临时或永久的桌子更好
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |