1

我的 Db 表如下

|id|code|qn1|qn2|qn3|qn4|qn5|.............|qn38|qn39|qn40|name|modfiedDate|status|RollNo|

我正在尝试优化查询以从该表中获取详细信息

我需要找到为我当前查看的问题选择的未回答问题的数量和选项

例如:qn1 保持为问题 1 选择的值

询问

select * from tbl_name where code ='xx' and RollNo ='123';

一次查看页面显示的一个问题,我需要所有未回答的问题并且有很多点击

总共有 40 个问题字段有时可能只有 22 个问题

所以这个查询是否提高了性能

$field_str="";
for($no=1;$no<=$TotalQ_count;$no++)
{   
    $field_str .= ",qn".$no;
}

$field_str =ltrim($field_str,",");

$querycnt = "SELECT status, $field_str from tbl_name
 where code ='xx' and RollNo ='123' ";

还有其他方法可以改进此查询吗?

4

1 回答 1

1

您应该创建另一个数据库结构。像这样的东西:

表“测试

id|date|some_other_columns...

和表“问题

id|test_id|answer|date|some_other_columns

然后您可以轻松地进行查询:

SELECT
    COUNT(*) AS `unanswered_questions`
FROM `tests`
INNER JOIN `questions`
    ON `tests`.`id` = `questions`.`test_id`
WHERE 1
      AND `tests`.`id` = 5
      AND `questions`.`answer` IS NOT NULL
于 2013-10-08T07:41:12.563 回答