我的查询在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内部服务器错误。
编辑3:好吧。测试暂停。远程数据库刚刚开始使用SSL进行数据库连接,因此我以前的用户不工作。我现在需要为SSL配置我的客户端。我猜他们正在调整我的剧本一周的调整。
答案 0 :(得分:0)
两种可能性:
您是否能够获取至少1条记录?
尝试增加php.ini文件中的String priortyStr = priority.getSelectedItem().toString();
int imageId = 0;
if(priortyStr.equals("Low"))
imageId = R.drawable.blue;
else if(priortyStr.equals("Medium"))
imageId = R.drawable.green;
else
imageId = R.drawable.red;
如果内存限制很低,则将内存限制更改为128M
答案 1 :(得分:0)
这是您的查询:
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)
。