[MySQL] LIKE 관련 궁금증 해결

Suhyeon Lee·2025년 1월 9일
0

자기주도학습

목록 보기
71/83

mysql 여러 컬럼에서 검색어 있는지 동시에 검사하는 조건문이?

  • 해당 검색어가 테이블의 여러 컬럼에(최소 15개이상) 있는지 검사하는 조건문
    • where '검색어' IN (컬럼명1,컬럼명2,컬럼명3,컬럼명4...)는 가능한데 like로는 못 하나?

우리는 "컬럼은 왼쪽 조건값은 오른쪽" 이라는 고정관념을 가지고 있습니다. 이 틀을 깨야만 합니다.
WHERE :검색조건값 IN (code1, code2)
WHERE :검색조건값 = ANY (code1, code2)
= ANY : IN과 같은 기능

ANSWER
where concat(col1, col2, col3...) regexp '검색어'

하지만 그리 추천하고 싶은 방법은 아니네요.
성능상의 문제가 생긴다면 쿼리가 길어지더라도 별 수 없지 않을런지요? 
아마 실행계획이 풀스캔 뜨지 않을까 생각합니다.
풀스캔이란 'table full scan'을 말합니다. 이름 그대로 index 를 사용하지 않고 table 에 들어있는 전체 데이터에서 원하는 데이터를 찾는다는 거죠.(당연한 얘기지만 table에 데이터가 많을 수록 속도가 느려질 것이니 되도록 지양해야 하는 방법입니다.)
거기에다 매 row 마다 concat 함수를 실행해야하니 더욱 느려질거라 봅니다.
그러니 다른 조건을 주어서 대상을 먼저 좁힌 후 각 컬럼에 대해 OR로 찾으시는게 좋을 듯 하네요.

MySQL 비교 연산자 정리

profile
2 B R 0 2 B

0개의 댓글

관련 채용 정보