2009-10-13 5 views
1

특정 값이없는 status 필드를 기반으로 레코드를 반환하는 간단한 쿼리가 있습니다. 필드가 1,2,3 ... 10의 값을 가질 수 있고 값 3, 7 및 9가없는 모든 레코드를 반환하려는 인수에 대해 말하게합니다. 다음 중 가장 적합한 것은?MYSQL IN 또는 여러 조건부

옵션 2.

SELECT `id` FROM `tbl` WHERE `status` NOT IN ('3','7','9'); 

덕분에 당신이 도움을 위해 1

SELECT `id` FROM `tbl` WHERE (`status` != '3' AND `status` != '7' AND `_status` != '9') 

옵션.

답변

4

옵티마이 저는 두 쿼리를 같은 것으로 줄이고, 이것이 사실이라면 나는 두 번째 옵션을 선호합니다. 더 짧고 구문 분석하기 쉽기 때문입니다.

확인을 위해 실제 데이터가있는 각 쿼리에 EXPLAIN을 실행해야합니다.

1

가장 좋은 방법은

tbl에서 선택 id을 EXPLAIN 예

에 대한 명령 을 EXPLAIN 사용하여 쿼리를 최적화하기 위해 WHERE status NOT IN ('3', '7', '9'); 및 실행 시간보기