에티테마

mysql (MriaDB) SUBSTRING_INDEX 사용방법 (한컬럼에 두개의 레코드 분리 검색)

페이지 정보

작성자 소프트존 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 작성일 25-02-14 15:51

본문

한개의 컬럼에 두개의 값이 들어가 있는 경우
예를 들어서 레코드 값을 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';
 





  • 트위터로 보내기
  • 페이스북으로 보내기
  • 구글플러스로 보내기

댓글목록

등록된 댓글이 없습니다.