SELECT * FROM table WHERE name like '%홍길동%'
vs
SELECT * FROM table WHERE INSTR(name, '홍길돋')>0;
2개중 어떤걸 사용하는게 좋을까요.
아니면, 다른 좋은 방법 없을까요?
쿼리 둘 다 인덱스를 타지 않으므로 All Type 형식의 테이블 풀스캔을 수행합니다.
내용을 보니 name 컬럼에 홍길동이라는 값이 포함되어 있는 레코드를 검색할려고 하시는 것 같은데
그럴 경우 아래와 같은 쿼리형식이 더 좋습니다.
select * from act WHERE name like '%\홍길동'
홍길동 값 앞에 한개 이상의 어떤값이 있는 경우를 포함해서 검색하는 조건입니다.
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html
자세한건 위의 메뉴얼을 참조하세요..
참고로 MySQL 의 프로파일링으로 각 쿼리에 대해서 어느 쿼리가 성능이 좋은지
면밀하게 알 수 있습니다.