gpt4 book ai didi

php - PHP 中的 Mysql 查询挂起 3000 多个结果

转载 作者:行者123 更新时间:2023-11-30 22:45:23 25 4
gpt4 key购买 nike

我有一个查询在 2 天前运行良好。它查询一个远程数据库,获取几千名学生的测验数据。通常结果集大约有 10000 行。

2 天前,脚本开始挂起,我已经追踪到这个查询:

mysql_query("SELECT qg.userid, ROUND( qg.grade * 100 / q.grade, 2 ) grade, q.grade as qgrade, q.id quizid, qg.timemodified FROM mdl_quiz_grades qg, mdl_quiz q WHERE q.id = qg.quiz AND q.course = 47 And q.id in (-1,153,158,163,170,176,181,184,199,205,206)  Order By userid, quizid

将结果限制为 3000 是可以的,它会立即执行,但如果限制为 3001,它会挂起而不会完成。

我也可以在 phpMyAdmin 中毫无问题地执行查询。

编辑:结果限制一直在变化。我刚刚能够返回 3700 个结果,现在不能再返回了。

Edit2:在 phpMyAdmin 中进行更多测试。当访问 3000+ 范围内的记录时,phpMyAdmin 将挂起并最终抛出 500 内部服务器错误。

Edit3:嗯。暂停测试。远程数据库刚刚开始使用 SSL 进行数据库连接,因此我以前的用户无法正常工作。我现在需要为 SSL 配置我的客户端。我猜他们在整整一周都在调整我的剧本。

最佳答案

这是您的查询:

SELECT qg.userid, ROUND( qg.grade * 100 / q.grade, 2 ) as grade,
q.grade as qgrade,
q.id as quizid, qg.timemodified
FROM mdl_quiz_grades qg JOIN
mdl_quiz q
ON q.id = qg.quiz
WHERE q.course = 47 And
q.id in (-1, 153, 158, 163, 170, 176, 181, 184, 199, 205, 206)
Order By qg.userid, quizid;

我不知道为什么你的表现会受到影响。但是,使用正确的索引,上述查询将运行得更快。最好的索引是:mdl_quiz(course, id, grade)mld_quiz_grades(quiz)

关于php - PHP 中的 Mysql 查询挂起 3000 多个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799286/

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