SQL IN과 OR의 비교

2020. 9. 11. 17:40DB

OR

어떠한 논리합 관계도 표현이 가능합니다.

IN

하나의 컬럼이 여러개의 =조건을 가지는 경우에만 가능합니다.

IN -> OR(가능)
IN

SELECT *
FROM TAB1
WHERE COL IN (1, 5, 7)

OR

SELECT *
FROM TAB1
WHERE (COL = 1 OR COL = 5 OR COL = 7)

OR -> IN(불가능)
OR

SELECT *
FROM TAB1
WHERE (COL1 = 1 OR COL = 2 OR NAME LIKE '3%')

IN을 사용할 수 있는 경우라면 OR보다 IN을 사용하는 것이 좋습니다. IN은 경우에 따라서 서브쿼리를 이용하여 보다 유연한 확장이 가능합니다. IN은 반드시 하나의 컬럼이 비교되어야 하지만 OR는 여러 개의 컬럼이 올 수 있으므로 나중에 인덱스 구성에 대한 전략을 수립할 때도 IN이 유리합니다. 그리고 IN절의 경우에는 인덱스를 이용해서 조건을 검색할 수 있지만, OR은 인덱스를 이용하지 못 합니다. OR 연산자는 정말 다른 방법이 도저히 없는 경우를 제외하고는 사용하지 않는 것이 바람직합니다.

참조: http://wiki.gurubee.net/pages/viewpage.action?pageId=2458033

728x90

'DB' 카테고리의 다른 글

DB Cluster  (0) 2020.11.20
MySQL Stored Procedure의 장단점  (0) 2020.09.17
MVCC  (0) 2020.06.26
DB Index  (0) 2020.06.19
Trigger  (0) 2020.06.18