어라? 전체 검색속도가........ 정보
어라? 전체 검색속도가........본문
그누보드 원본(bbs/search.php)
$str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else
$str .= "INSTR($field[$k], '$search_str')";
RUN TIME : 12.7149419785
수정1
$str .= " $field[$k] like '%$search_str%' ";
RUN TIME : 3.24099111557
수정2
$str .= " $field[$k] like '$search_str%' ";
RUN TIME : 0.471668958664
총게시물(코멘트포함) 41,134개에서 제목+내용으로 테스트
그래서 수정1번으로 바꾸었음....;;;;
2번은 빠르기는 한데 결과값이 만족 스럽지 못해서 배제....
나 잘 했죠^^
$str .= "INSTR(LOWER($field[$k]), LOWER('$search_str'))";
else
$str .= "INSTR($field[$k], '$search_str')";
RUN TIME : 12.7149419785
수정1
$str .= " $field[$k] like '%$search_str%' ";
RUN TIME : 3.24099111557
수정2
$str .= " $field[$k] like '$search_str%' ";
RUN TIME : 0.471668958664
총게시물(코멘트포함) 41,134개에서 제목+내용으로 테스트
그래서 수정1번으로 바꾸었음....;;;;
2번은 빠르기는 한데 결과값이 만족 스럽지 못해서 배제....
나 잘 했죠^^
추천
0
0
댓글 12개
원본이랑 수정이랑 결과값이 똑같지 않을텐데요...?
똑같은데요ㅡㅡ;; 수정 2번만 다르지.....
그리고 원래 instr 이 like 보다 빠른걸로 알고있는데...
대소문자 구별안하는 한국어는 instr 검색이 훨씬 빠른걸로 아는데...
그래서 preg_match("/[a-zA-Z]/", $search_str) 이게 있는거같은데,
영어의 경우는 대소문자 구별할 경우 instr 이 2배정도 빠르고
안할경우는 2배정도 느리고요.
$str .= " $field[$k] like '%$search_str%' ";
else
$str .= "INSTR($field[$k], '$search_str')";
이렇게 하면 더 빠르지 않을까요?
좋은 팁이네요. 감사합니다~
대소문자 구별안하는 한국어는 instr 검색이 훨씬 빠른걸로 아는데...
그래서 preg_match("/[a-zA-Z]/", $search_str) 이게 있는거같은데,
영어의 경우는 대소문자 구별할 경우 instr 이 2배정도 빠르고
안할경우는 2배정도 느리고요.
$str .= " $field[$k] like '%$search_str%' ";
else
$str .= "INSTR($field[$k], '$search_str')";
이렇게 하면 더 빠르지 않을까요?
좋은 팁이네요. 감사합니다~
알려주신대로 테스트 해보니까 RUN TIME : 12.5592310429 나오네요...
498,150개의 게시물에서 테스트해보니까
그누원본 방식이 26.7325658798 나오구요
수정1번으로 하니까 9.34008789062 나오네요....
like가 3~4배 빠르네요....
498,150개의 게시물에서 테스트해보니까
그누원본 방식이 26.7325658798 나오구요
수정1번으로 하니까 9.34008789062 나오네요....
like가 3~4배 빠르네요....
혹시 or 을 union으로 합쳐서도 테스트 해 주실 수 있나요?
듣기로는 union 이 or 보다 3500배 빠르다던데...
select where instr(a,b) or instr(a,c)
를
select where a and b
union
select where a and c
이런식으로요...
듣기로는 union 이 or 보다 3500배 빠르다던데...
select where instr(a,b) or instr(a,c)
를
select where a and b
union
select where a and c
이런식으로요...
으음.... 나중에 union으로 테스트해 보고 결과를 알려 드리죠...
현재 독자분들은 외계 대화를 보고 있습니다.
.
.
.
그리고 원래 instr 이 like 보다 빠른걸로 알고있는데...
이건 알아듣겠군요 ㅋ
과연... 결론은?
.
.
.
그리고 원래 instr 이 like 보다 빠른걸로 알고있는데...
이건 알아듣겠군요 ㅋ
과연... 결론은?
10만건 넘어가면 라이크가 훨씬 느립니다. 경험상 확실한 체감속도가 느껴지던데요. ^^
10만건 기준으로 SQL Query를 변경하면 되지 않을까요?
외계 대화를 보았습니다 +_+ 쩜쩜쩜...
http://www.linuxchannel.net/board/read.php?no=73&table=alpha
그누 주석에도
// LIKE 보다 INSTR 속도가 빠름
라고 나와있을 텐데...
그누 주석에도
// LIKE 보다 INSTR 속도가 빠름
라고 나와있을 텐데...
// LIKE 보다 INSTR 속도가 빠름
그거 다 아는데요... 직접 테스트해보니까 LIKE가 빠른걸 어떡해유....ㅉㅉ
50만건에서 LIKE로 테스트 해보니까 더 빠른걸 우짜라고요....ㅡㅡ;;;
그거 다 아는데요... 직접 테스트해보니까 LIKE가 빠른걸 어떡해유....ㅉㅉ
50만건에서 LIKE로 테스트 해보니까 더 빠른걸 우짜라고요....ㅡㅡ;;;