Skip to content

효율적으로 디비 쿼리수 줄이기 Tip

Tip 조회 수 8013 추천 수 0 2012.01.16 20:17:21
커뮤니티 사이트를 만들어서 운영하다 보면 회원포인트를 뽑아서 등급을 보여준다던지 게시판 리스트나 이런곳에서 등급아이콘을 보여준다던지 하는 경우가 많습니다. 
회원에 대한 리스트가 많을수록 그만큼 디비에 대한 쿼리수가 늘수 밖에 없는데요 

이런때 간단한 방법으로 효율적으로 쿼리수를 줄이는 방법입니다. 

lib안에 common.lib.php라는 파일이 있습니다. 
여기에 아주 자주 사용되는 get_member라는 함수가 있습니다. 


// 회원 정보를 얻는다. 
function 
get_member($mb_id, $fields='*') 
{ 
    global $g4; 
    return 
sql_fetch(" select $fields from $g4[member_table] where mb_id = TRIM('$mb_id') 
"); 
} 



요렇게 되어있는데요. 이것을 아래와 같이 수정합니다. 

// 회원 정보를 얻는다. 
function 
get_member($mb_id, $fields='*') 
{ 
    global $g4; 
    $mb_id = 
trim($mb_id); 
    $fields = trim($fields); 
    if (empty($mb_id)) return 
Array(); 
    if (empty($fields)) $fields = '*'; 
    if ($fields == '*' 
&& !empty($g4['member_info'][$mb_id]['mb_id'])) { 
      $return = 
$g4['member_info'][$mb_id]; 
    } 
    else { 
      $return = 
sql_fetch(" select $fields from $g4[member_table] where mb_id = '$mb_id' "); 

      if ($fields == '*') $g4['member_info'][$mb_id] = $return; 
    } 

    if (isset($return['mb_point'])) $g4['member_info'][$mb_id]['mb_point'] = 
$return['mb_point']; 
    return $return; 
} 



이렇게 하는 이유는 같은 회원정보를 반복해서 가져오지 않기 위해서 입니다. 
예를 들어 게시판 리스트 같은 경우 모두 다른 글작성자일수도 있지만 같은 글작성자가 반복적으로 있을경우에 그만큼 회원정보를 가져오는 쿼리수를 줄일수 있게 됩니다. 

그리고 아주 자주 쓰는 회원 포인트정보를 가져오는 함수를 하나더 만듭니다. 


//회원정보중 포인트 정보만 얻는다 
function 
get_member_point($mb_id) 
{ 
    global $g4; 
    $mb_id = 
trim($mb_id); 
    if (empty($mb_id)) return 0; 
    if 
(isset($g4['member_info'][$mb_id]['mb_point'])) { 
      $return = 
$g4['member_info'][$mb_id]['mb_point']; 
    } 
    else { 
      $data 
= sql_fetch(" select mb_point from $g4[member_table] where mb_id = '$mb_id' "); 

      $return = $data['mb_point']; 
      
$g4['member_info'][$mb_id]['mb_point'] = $return; 
    } 
    return 
$return; 
} 



이런식으로 회원정보중 포인트만 가져오는 것도 위와 같은 식으로 하면 많이 효율적일 것입니다. 

게시판 정보를 가져오는 것이라던지, 그룹정보를 가져오는 것이라던지, 반복이 많은 것들은 같은 방법으로 처리하면 많은 효율을 가져올수 있습니다.
profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/74399/983/trackback
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
47 Tip IE 버그와 해결책들 l2zeo 2013-07-03 8084
46 Tip IE css핵 (css hack)과 IE filter file [1] l2zeo 2013-07-03 14548
45 Tip 그누보드 패밀리사이트에서 회원가입연동 l2zeo 2013-05-31 5921
44 Tip robots.txt 관련 Tip. l2zeo 2013-05-30 9517
43 Tip jquery 관련 l2zeo 2013-05-26 6357
42 Tip Cascading Style Sheets (자바스크립트 style 객체) l2zeo 2013-04-25 6272
41 Tip 스토리보드 이제 쉬워졌어요~~ PowerMockUp 소개 해 봅니다.^^ file l2zeo 2013-03-18 6785
40 Tip 웹 서비스 구현시 캐시 구현을 남발해서는 안되는 이유? l2zeo 2013-03-18 6579
39 Tip 포인트가 마이너스일때 = 포인트 마이너스 회원들 포인트를 0으로 ... l2zeo 2013-03-15 9589
38 Tip 일정 포인트 이상은 적립안되게 하기 l2zeo 2013-03-15 5080
37 Tip CSS shorthand properties (단축 속성) [1] l2zeo 2013-02-26 5371
36 Tip 마우스 오버할때 아이디 안보이게 하기 file l2zeo 2013-02-03 5775
35 Tip 모바일에서도 이미지 리사이징 기능 적용하기 l2zeo 2013-01-24 52259
34 Tip 모바일에서 동영상 크기 지정해서 보여줄때. l2zeo 2013-01-24 6901
33 Tip 썸네일 생성이 되지 않을때 확인할것 file l2zeo 2013-01-24 7453
32 Tip Mini Help System with jQuery file [1] l2zeo 2013-01-23 5622
31 Tip CSS3 를 이용한 툴팁(Tooltip) 표시 [1] l2zeo 2013-01-23 6066
30 Tip [caching tip] js, css 캐싱 팁 l2zeo 2013-01-23 5342
29 Tip 페이스북 담벼락에 자동 게시하는 법 l2zeo 2013-01-23 9621
28 Tip [Lazy Load Plugin for jQuery] 효율적인 이미지 로딩 file l2zeo 2013-01-23 10229

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234