데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
체크박스 로 받은 값을 한 컬럼에 콤마(,)로 구분해서 데이터를 집어넣고
해당 데이터 검색시 like 나 CHARINDEX 형태로 검색을 하는데요
해당 데이터가 많은 경우에는 해당 검색을 계속 or 로 묶다 보니까 속도가 너무 느려지는데요..
예를 들어서
구인구직 사이트 같은 경우 근무가 가능한 거주지 등을 선택하는데
전국, 수도권, 충청, 전라, 경상, 제주, 해외 등..여러 군데를 선택할 수 있도록 되어 있습니다.
이 부분을 DB에 입력시에 한 컬럼에 수도권, 제주, 해외 이런식으로 콤마(,)로 구분해서 입력이 되어있고
검색시에는
컬럼명이 m_local 이라고 한다면
검색쿼리에서 선택한 거에 따라서
(m_local like '%수도권%' or m_local like '%제주%') 이런식으로 like검색을 or 로 묶는 식으로 검색을 하게 되다보니까
선택한 조건이 늘어날 수록 속도가 느려지게 됩니다.
이런 부분은 보통 어떤 식으로 DB구성이나 검색시에 어떻게 처리해야 속도 에 문제가 없는지 알소 싶습니다.
Comment 1
-
weback
2018.12.28 13:47
지역리스트가 들어있는 컬럼에 있는 로우를 한줄로 나열하여(구분자를 콤마(,)가 아닌 or( | ) 로 치환) 스칼라변수에 담은 다음
where m_local like'%['+@local+']%' 이런 식으로 처리 해주시면 될듯 합니다.