체크박스 로 받은 값을 한 컬럼에 콤마(,)로 구분해서 데이터를 집어넣고
해당 데이터 검색시 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+']%' 이런 식으로 처리 해주시면 될듯 합니다.