접속자 : 26(회원0)  오늘 69 어제 605 최대 13,898 전체 8,997,274  
커뮤니티정보포토 플라자공간 비디오뮤직-카페 자료 공간 관심+즐거움
Tip & TechJava Script그누보드 관련 자료Action ScriptHTML/CSSLINUX TipMySQL TipPHP Tip
   wego21™  LOGIN
  
  
  ID저장  자동로그인
회원가입  아이디/비밀번호 찾기
Tip & Tech
Java Script
그누보드 관련 자료
LINUX Tip
PHP Tip
MySQL Tip
HTML/CSS
Action Script
그누보드 관련 자료 베스트 #10
 
작성일 : 08-05-02 10:40
그누보드에서 효율적으로 디비에 쿼리수 줄이기
 글쓴이 : IN-BEST
조회 : 17,776  
커뮤니티 사이트를 만들어서 운영하다 보면
회원포인트를 뽑아서 등급을 보여준다던지
게시판 리스트나 이런곳에서 등급아이콘을 보여준다던지 하는 경우가 많습니다.
회원에 대한 리스트가 많을수록 그만큼 디비에 대한 쿼리수가 늘수 밖에 없는데요

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

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;
}

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


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



홈페이지소개   |   개인정보보호   |   광고   |   배너등록   |   찾아 오시는길

:::::::::::::::::::::: 인-베스트 코리아 | 김인배 | 경기 군포시 산본동 1135, 광림빌딩 706호 | TEL: 031-393-2212 | FAX: 031-393-2219 | E-mail: korea@in-best.com :::::::::::::::::::::: Copyright (C) '2008 wego21.com All rights reserved. Designed by IN-BEST™