gpt4 book ai didi

php - MCQ 测验加载缓慢且随机化不起作用

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

我正在创建一个基于 php 和 mysql 的 MCQ 测验。以下是我的主要表的结构:

测验表:测验 id,quiz_category类别表:id,标题...问题表:id,测验id,categoryid,标题...答案表:id,问题id...

首先,我在表格中填充了 150 多个测验、4 个类别、14000 多个问题和每个问题的正确答案。

为了节省时间,每个问题的正确答案都是从答案表中提取的 https://stackoverflow.com/editing-helpalongwith其他 3 个随机答案。

现在,当我只用两个测验测试它时,它运行良好。但是有 150 个测验,出现了几个问题:

  • 数据库很慢,以后的测验需要很长时间才能加载问题
  • 答案的随机化不再起作用 - 除了正确答案,其他选项显示相同的条目,使用户很容易猜出正确答案。

您可以在我之前的 Stackoverflow 查询中看到我正在使用的代码。 https://stackoverflow.com/questions/14826573/randomising-questions-and-answers-php-quiz-not-working

关于测验程序运行的理想查询应该是什么,您有什么想法吗?

最佳答案

我将提供一些关于如何提高性能的提示,但这些都是通用的,可能并不完整。

从简要查看您的 PHP 和 SQL 语句 from your previous question , 索引有几个逻辑位置。要添加索引,请引用 MySQL manual了解更多信息

$sql4="select * from answers where question_id=".$row2['id'];

question_id 应该有一个索引

$sql2="select * from questions where quiz_id=".$_SESSION['quizid'];

quiz_id 应该有一个索引

加入这两个索引也会提高对此的选择性

$sql3="select * from answers where question_id in (select id from
questions where quiz_id =$row2[quiz_id]) order by rand()";

这将有所帮助,因为以前您会为每个查询执行全表扫描。

你的另一个问题是你有一个循环,并且在每次迭代中你发送命令来查询数据库,你应该在循环之前立即收集所有信息,然后使用它进行迭代,而不是每次迭代发送单独的查询。

关于php - MCQ 测验加载缓慢且随机化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14958737/

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