簡體   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