CI 묻고 답하기

제목 DB_query_builder . 2358 line 문의 드려요!
카테고리 CI 2, 3
글쓴이 다다닷 작성시각 2017/07/04 12:01:31
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 14168   RSS

안녕하세요.

이건 preg_match 함수에 한번에 처리할 수 있는 데이터 크기 이상으로

전달 했을때 발생하는 문제로 확인됩니다.

어떤 상황이냐 하면

쿼리에서 where_in 조건 내 string 값을 약 6만개를 던져 버리니 

위 DB_query_builder.php  파일 2358 line 에서 preg_match 함수 오류를 표시하는데

간단하게 해결한 방법은 where_in 조건 내 값을 일정 개수 만큼 잘라서 던져 현재

처리는 했습니다. 하지만 DB_query_builder 내에서 처리를 해버릴 수 있다면 조금더 

중복코드를 제거 할 수 있지 않을까 하는 생각에.. 해당 파일 내 코드를 어떤 형식으로

변경 해보면 좋을까 싶어 조언을 얻고자 문의 드립니다.

 다음글 게시판 검색기능 (3)
 이전글 CI 이메일 전송 궁금한점 있습니다! (2)

댓글

한대승(불의회상) / 2017/07/04 12:23:43 / 추천 0
서브쿼리를 사용하는게 더 효율적이지 않을까요?
다다닷 / 2017/07/04 12:28:14 / 추천 0

@한대승(불의회상)님 

안녕하세요^^

where_in 은 말그대로 일치하는 녀석들만 뽑기 위함인데 여기에 서브쿼리라 함은 어떤 모양을 

말씀 하시는건가요??

한대승(불의회상) / 2017/07/04 12:29:30 / 추천 0

$this->db->where_in('col_name', '(select col from db where col=1)', false);

6만개 정도의 데이터라면 DB에서 가져올거라 생각되어서요.

다다닷 / 2017/07/04 13:36:43 / 추천 0

@한대승(불의회상)

제가 where_in 함수를 좀더 봐야겠네요 ^^ 감사합니다!!

-- 일단 쿼리 자체에 

SELECT 

   ( 서브쿼리 ),

   ( 서브쿼리 ),

 FROM table

WHERE IN ( 'col1', array() );

위와 같은 형태라 .. DB에서 가져오는건 맞습니다.

조금 더 생각을 해봐야겠네요! 감사합니다.