쿼리문을 조건에 따라 추가하여 값을 출력하고 싶습니다 채택완료
지금 값을 꺼내기 위한 쿼리문을 작성 중 입니다.
예를 들어
</p>
<p><?php</p>
<p>include_once('./_common.php');</p>
<p> </p>
<p>$table=$_POST['tbl'];</p>
<p>$diseaseTarget=$_POST['diseaseTarget'];</p>
<p>$validityTarget=$_POST['validityTarget'];</p>
<p>$drugTarget=$_POST['drugTarget'];</p>
<p>$companyTarget=$_POST['companyTarget'];</p>
<p>$speciesTarget=$_POST['speciesTarget'];</p>
<p> </p>
<p>if($table === "FISH_DRUG"){</p>
<p> </p>
<p> $sql = "SELECT DISTINCT DRUG_NAME </p>
<p> FROM ".$table.", ADMINISTRATION_METHOD, FISH_DISEASE, ACTIVE_INGREDIENTS_BY_DRUG, ACTIVE_INGREDIENT, MANUFACTURING_COMPANY, FISH_SPECIES</p>
<p> WHERE FISH_DRUG.DRUG_NAME LIKE '%".$drugTarget."%'</p>
<p> AND FISH_DRUG.DRUG_CODE = ADMINISTRATION_METHOD.DRUG_CODE ";</p>
<p> </p>
<p> if(!($diseaseTarget === "")){</p>
<p> $sql .= "AND FISH_DISEASE.DISEASE_CODE = ADMINISTRATION_METHOD.DISEASE_CODE</p>
<p> AND FISH_DISEASE.DISEASE_NAME_KR = '".$diseaseTarget."'";</p>
<p> }</p>
<p> if(!($validityTarget === "")){</p>
<p> $sql .= "AND FISH_DRUG.DRUG_CODE = ACTIVE_INGREDIENTS_BY_DRUG.DRUG_CODE </p>
<p> AND ACTIVE_INGREDIENT.INGREDIENT_CODE = ACTIVE_INGREDIENTS_BY_DRUG.ACTIVE_INGREDIENT_CODE</p>
<p> AND ACTIVE_INGREDIENT.INGREDIENT_NAME = '".$validityTarget."'";</p>
<p> }</p>
<p> if(!($companyTarget === "")){</p>
<p> $sql .= "AND FISH_DRUG.MANUFACTURING_COMPANY_CODE = MANUFACTURING_COMPANY.COMPANY_CODE </p>
<p> AND MANUFACTURING_COMPANY.COMPANY_NAME = '".$companyTarget."'";</p>
<p> }</p>
<p> if(!($speciesTarget === "")){</p>
<p> $sql .= "AND FISH_SPECIES.SPECIES_CODE = ADMINISTRATION_METHOD.SPECIES_CODE </p>
<p> AND FISH_SPECIES.SPECIES_NAME = '".$speciesTarget."'";</p>
<p> }</p>
<p> $result = sql_query($sql);</p>
<p>
이런식으로 조건을 주어 조건의 쿼리문을 추가하고 싶은데 이렇게 값을 내려고 하니 모든 테이블을 추가해서 그런지 속도가 엄청 느려졌습니다 ㅠㅠ
from 다음에 있는 테이블도 if 조건에 해당될 때 테이블을 추가하는 형식으로 하고 싶은데
$table .= ""FISH_DISEASE";
이렇게 넣으니 값이 나오지 않아 모두 나열하여 사용했는데 속도때문이라도 테이블 값을 추가해야할 것 같습니다!
어떻게 하면 좋을까요 ,,,ㅠㅠㅠ
이게 POST로 넘어오는 변수여서 값을 추가할 수 없는건지,,,,
아니면 따로 테이블 변수를 하나 더 추가하여 추가되는 테이블만을 따로 관리하고 싶은데 어떻게 하면 좋을까요?ㅠㅠ
답변 2개
올려주신 글만 봐서는 from table1,table2..... 이렇게 나열되어 있으니 느려지는 건 당연한 듯 싶은데.
왜 저렇게 해야만 하는 상황인지 이해가 안 가네요. table간 join할 키도 없는지.
근본 해결은 DB를 변경해야 할 듯 한데 해당 업무를 알 수 없으니 DB구조를 어떻게 하라고 충고 드리기도 어렵네요,
일반적인 Tip만 드린다면 distinct보다는 group by 쓰시는 게 속도는 나을 겁니다,
그리고 like 검색을 인덱스 적용 되도록 '검색어%' 로 가능한지도 살펴 보세요
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인