組み合わせる方法を理解できないように見えるステートメントがいくつかあります。
現在、私のコードは次のようになっています。
if(!$question && $filter){
$qry = mysql_query("SELECT * FROM mbr_qa_questions WHERE q_tags RLIKE '[[:<:]]" . $filter . "[[:>:]]' ORDER BY q_id ASC LIMIT $start, 1 ");
} else if($question && !$filter){
$qry = mysql_query("SELECT * FROM mbr_qa_questions WHERE MATCH (q_title, q_description, q_tags) AGAINST ('$question') ORDER BY q_id ASC LIMIT $start, 1 ");
} else if($question && $filter){
//NEED A COMBINED QUERY OF THE FIRST TWO HERE.
} else {
$qry = mysql_query("SELECT * FROM mbr_qa_questions ORDER BY q_id ASC LIMIT $start, 1");
}
いくつかの列 ( q_title, q_description, q_tags
) にインデックスが付けられていますが、これらのステートメントのどれもが十分に効率的かどうかはわかりません。
簡単に言えば、次のステートメントが必要です。
SELECT * FROM mbr_qa_questions WHERE q_tags RLIKE '[[:<:]]" . $filter . "[[:>:]]' ORDER BY q_id ASC LIMIT $start, 1
そしてこの声明:
SELECT * FROM mbr_qa_questions WHERE MATCH (q_title, q_description, q_tags) AGAINST ('$question') ORDER BY q_id ASC LIMIT $start, 1
単一のステートメントに結合されます。また、もしよろしければ、これがどれほど非効率的であるかを教えてください。また、より良い方法を提案していただけませんか?