쿼리문을 조건에 따라 추가하여 값을 출력하고 싶습니다 채택완료

지금 값을 꺼내기 위한 쿼리문을 작성 중 입니다.

 

예를 들어

Copy
<?php

include_once('./_common.php');

 

$table=$_POST['tbl'];

$diseaseTarget=$_POST['diseaseTarget'];

$validityTarget=$_POST['validityTarget'];

$drugTarget=$_POST['drugTarget'];

$companyTarget=$_POST['companyTarget'];

$speciesTarget=$_POST['speciesTarget'];

 

if($table === "FISH_DRUG"){

 

  $sql = "SELECT DISTINCT DRUG_NAME 

            FROM ".$table.", ADMINISTRATION_METHOD, FISH_DISEASE, ACTIVE_INGREDIENTS_BY_DRUG, ACTIVE_INGREDIENT, MANUFACTURING_COMPANY, FISH_SPECIES

           WHERE  FISH_DRUG.DRUG_NAME LIKE '%".$drugTarget."%'

             AND FISH_DRUG.DRUG_CODE = ADMINISTRATION_METHOD.DRUG_CODE ";

  

  if(!($diseaseTarget === "")){

    $sql .= "AND FISH_DISEASE.DISEASE_CODE = ADMINISTRATION_METHOD.DISEASE_CODE

             AND FISH_DISEASE.DISEASE_NAME_KR = '".$diseaseTarget."'";

  }

  if(!($validityTarget === "")){

    $sql .= "AND FISH_DRUG.DRUG_CODE = ACTIVE_INGREDIENTS_BY_DRUG.DRUG_CODE 

             AND ACTIVE_INGREDIENT.INGREDIENT_CODE = ACTIVE_INGREDIENTS_BY_DRUG.ACTIVE_INGREDIENT_CODE

             AND ACTIVE_INGREDIENT.INGREDIENT_NAME = '".$validityTarget."'";

  }

  if(!($companyTarget === "")){

    $sql .= "AND FISH_DRUG.MANUFACTURING_COMPANY_CODE = MANUFACTURING_COMPANY.COMPANY_CODE 

             AND MANUFACTURING_COMPANY.COMPANY_NAME = '".$companyTarget."'";

  }

  if(!($speciesTarget === "")){

    $sql .= "AND FISH_SPECIES.SPECIES_CODE = ADMINISTRATION_METHOD.SPECIES_CODE 

             AND FISH_SPECIES.SPECIES_NAME = '".$speciesTarget."'";

  }

  $result = sql_query($sql);

이런식으로 조건을 주어 조건의 쿼리문을 추가하고 싶은데 이렇게 값을 내려고 하니 모든 테이블을 추가해서 그런지 속도가 엄청 느려졌습니다 ㅠㅠ

 

from 다음에 있는 테이블도 if 조건에 해당될 때 테이블을 추가하는 형식으로 하고 싶은데

$table .= ""FISH_DISEASE";

이렇게 넣으니 값이 나오지 않아 모두 나열하여 사용했는데 속도때문이라도 테이블 값을 추가해야할 것 같습니다!

어떻게 하면 좋을까요 ,,,ㅠㅠㅠ

이게 POST로 넘어오는 변수여서 값을 추가할 수 없는건지,,,,

아니면 따로 테이블 변수를 하나 더 추가하여 추가되는 테이블만을 따로 관리하고 싶은데 어떻게 하면 좋을까요?ㅠㅠ

답변 2개

채택된 답변
+20 포인트

올려주신 글만 봐서는 from table1,table2..... 이렇게 나열되어 있으니 느려지는 건 당연한 듯 싶은데.

왜 저렇게 해야만 하는 상황인지 이해가 안 가네요.  table간 join할 키도 없는지.

근본 해결은 DB를 변경해야 할 듯 한데 해당 업무를 알 수 없으니 DB구조를 어떻게 하라고 충고 드리기도 어렵네요,

일반적인 Tip만 드린다면 distinct보다는 group by 쓰시는 게 속도는 나을 겁니다,

그리고 like 검색을 인덱스 적용 되도록 '검색어%' 로 가능한지도 살펴 보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

join을 사용하실 때는

index 관계를 잘 살펴 봐야 합니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고