mysql 여러 컬럼에서 검색어 있는지 동시에 검사하는 조건문이?
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
로 찾으시는게 좋을 듯 하네요.