mysql (MriaDB) SUBSTRING_INDEX 사용방법 (한컬럼에 두개의 레코드 분리 검색)
페이지 정보
작성자
본문
한개의 컬럼에 두개의 값이 들어가 있는 경우
예를 들어서 레코드 값을 po_content 컬럼에
"로그인 | 211.000.000.000" 처럼 앞에는 "로그인" 이라는 글자가 있고 뒤에는 "아이피" 주소가 있다면 검색을 할때 like 문으로 검색을 하기 때문에
속도면에서 좋지 않기 때문에 검색 및 처리 속도가 현저히 떨어지게 됩니다.
이런 경우 SUBSTRING_INDEX 를 사용해서 해당 레코드를 분리해서 별도로 처리할 수 있습니다.
SUBSTRING_INDEX(po_content, '|', 1) // 로그인
SUBSTRING_INDEX(po_content, '|', 2) // 로그인|211.000.000.000
SUBSTRING_INDEX(po_content, '|', -1) // 211.000.000.000
SUBSTRING_INDEX(po_content, '|', -2) // 로그인|211.000.000.000
아래 처럼 셀렉트 처리시에 뒷부분의 아이피주소만 검색하는 경우이다.
SELECT *, SUBSTRING_INDEX(po_content, '|', -1) AS ip_address from TABLE...
아래 처럼 조건을 넣어서 해당 아이피를 별도로 검색할 수 있습니다.
속도면에서 많은 이득이 있습니다.
// 조건검색 예제
SELECT
po_content,
SUBSTRING_INDEX(po_content, '|', -1) AS ip_address
FROM
g5_point_backup
WHERE
po_point = 1
AND SUBSTRING_INDEX(po_content, '|', -1) = '112.186.00.00';
댓글목록
등록된 댓글이 없습니다.