gpt4 book ai didi

php - 在 mysql WHERE 子句中传递 5,000 到 100,000 个值的正确方法

转载 作者:行者123 更新时间:2023-11-29 03:59:52 26 4
gpt4 key购买 nike

我从一个查询结果中得到 45000 个值,并且需要使用这些值来进行第二个查询,但是由于数组很大,执行时间超过 30 秒,所以出现错误:

Error: Maximum execution time of 30 seconds exceeded

有没有其他的方法可以快速的做这个数据库的数据计算,或者我应该计算数据然后保存在另一个表中,以便随时显示

查询:

    $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();

我正在使用 symfony 2.0 框架,学说 2.0

更新:考虑我在同一个数据库中有 5 个表,即。 1- 用户 2- googleData 3- facebook 数据 4-yahooData 5- session

当用户登录到我的应用程序时,我会从一个或多个社交资料数据中收集性别信息,并保存在那个特定的表中

现在我想计算所有使用过多次session的用户男女比例,

对于这种情况,从多个表中计算男女比例太难了。我觉得有一种解决方案,如果我直接在 session 表中添加性别列会很容易,但是有没有其他更好的方法通过使用 FK 或其他任何东西?

最佳答案

如果您必须传递 1000 个值(更不用说 100,000 个值),这可能意味着您的查询设计存在问题。数据必须来自某个地方,如果它来自数据库,那么使用连接或子查询将是一件简单的事情。如果它来自外部源,它可以进入一个临时表。

所以简而言之:是的,临时表或永久表更好

关于php - 在 mysql WHERE 子句中传递 5,000 到 100,000 个值的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39659553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com