Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提高mysql查询性能_Php_Mysql - Fatal编程技术网

Php 提高mysql查询性能

Php 提高mysql查询性能,php,mysql,Php,Mysql,我的数据库表如下 |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'; 每次查看页面显示一个问题,我需要所有未

我的数据库表如下

|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' ";
$field_str=”“;

对于($no=1;$no您应该创建另一个数据库结构。类似于:

表“测试”

和表格“问题”

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

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

您应该创建另一个数据库结构。类似于:

表“测试”

和表格“问题”

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

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

有一个问题,将查询从
select*from tbl_name
更改为
select几乎所有字段from tbl_name
会减少服务器上的负载吗?当然,您应该只获取您需要的列。这将有助于提高查询的性能。我在考虑开销,MYSQL会获取所有行吗将查询从
select*from tbl_name
更改为
select几乎所有字段from tbl_name
会减少服务器上的负载吗?当然,您应该只提取您需要的列。这将有助于提高性能我在考虑开销,MYSQL是获取所有行,然后剥离并只返回必填字段,还是只获取必填字段
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