포럼
질답게시판에 답을 하면서 몇가지 개선점이 있는것 같아서 글 올립니다.
2014.03.14 17:45
저도 경험한 것이지만
documents 테이블을 목록에서 불러올때 굳이 게시판 정보에 설정한 선별된 목록에서 불러와야 하는지 의문 입니다.
어차피 한페이지에 보이는 목록 갯수(기본 20개)는 정해져 있는 상황에서
선별해서 불러오는것과 전체를 불러오는것과 차이가 있는지 검토가 필요한것 같습니다.
본문이 이해가 안되신다고 해서 추가 합니다.
board.view.php 에서
목록 불러올때 아래의 _makeListColumnList()를 호출후 얻어진 $this->columnList 항목만 documents 테이블에서 가져와 목록에 뿌려줍니다.
_makeListColumnList() 과정을 거치는 것과 그냥 documents 테이블의 모든 필드를 가져오는것과 속도면에서 차이가 없을것 같다는 것입니다.
왜냐하면 통상 우리가 목록에 가져오는 row의 갯수가 통상 20개 수준이기 때문에 그 차이가 무시할 수 있는 수준일것으로 예상됩니다.
오히려 선별해서 목록을 뿌려주다보니 스킨 작업시 목록에서 선정되지 않은 항목은 표시할 수 없어서 다시 목록에서 선정해줘야하는 문제들이 발생하고 있습니다.
function _makeListColumnList()
{
$configColumList = array_keys($this->listConfig);
$tableColumnList = array('document_srl', 'module_srl', 'category_srl', 'lang_code', 'is_notice',
'title', 'title_bold', 'title_color', 'content', 'readed_count', 'voted_count',
'blamed_count', 'comment_count', 'trackback_count', 'uploaded_count', 'password', 'user_id',
'user_name', 'nick_name', 'member_srl', 'email_address', 'homepage', 'tags', 'extra_vars',
'regdate', 'last_update', 'last_updater', 'ipaddress', 'list_order', 'update_order',
'allow_trackback', 'notify_message', 'status', 'comment_status');
$this->columnList = array_intersect($configColumList, $tableColumnList);
if(in_array('summary', $configColumList)) array_push($this->columnList, 'content');
// default column list add
$defaultColumn = array('document_srl', 'module_srl', 'category_srl', 'lang_code', 'member_srl', 'last_update', 'comment_count', 'trackback_count', 'uploaded_count', 'status', 'regdate', 'title_bold', 'title_color');
//TODO guestbook, blog style supports legacy codes.
if($this->module_info->skin == 'xe_guestbook' || $this->module_info->default_style == 'blog')
{
$defaultColumn = $tableColumnList;
}
if (in_array('last_post', $configColumList)){
array_push($this->columnList, 'last_updater');
}
// add is_notice
if ($this->except_notice)
{
array_push($this->columnList, 'is_notice');
}
$this->columnList = array_unique(array_merge($this->columnList, $defaultColumn));
// add table name
foreach($this->columnList as $no => $value)
{
$this->columnList[$no] = 'documents.' . $value;
}
}