繁体   English   中英

改善mysql中的查询性能

[英]Improving Query performance in mysql

我的Db表如下

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

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

我需要找到当前我正在查看的问题的未解答问题数和选择的选项

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

询问

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' ";

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

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

表“ 测试

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM