쿼리문좀 봐주십쇼 정보
쿼리문좀 봐주십쇼본문
$sql_sub =
"select if(datediff(now(),reg_dm ) <= '7','Y','N') as is_new from goods WHERE left(rep_cat_cd,6) ='$d_cat_cd' order by reg_dm desc LIMIT 0 , 1 ";
'Y','N' -> 브랜드 새상품등록되면 뉴라고뜨는부분입니다
rep_dm -> 등록일시
$d_cat_cd -> 카테고리번호
rep_cat_cd ->카테고리위치
date_diff ->날짜함수?
now() -> 이건뭘까요 지금 시간을 말하는건가요?
지금 저 부분쿼리때문에 홈페이지가 많이 느린거같은데...
정확한 해석좀 해주실분 계신가요 ㅠ.ㅠ
"select if(datediff(now(),reg_dm ) <= '7','Y','N') as is_new from goods WHERE left(rep_cat_cd,6) ='$d_cat_cd' order by reg_dm desc LIMIT 0 , 1 ";
'Y','N' -> 브랜드 새상품등록되면 뉴라고뜨는부분입니다
rep_dm -> 등록일시
$d_cat_cd -> 카테고리번호
rep_cat_cd ->카테고리위치
date_diff ->날짜함수?
now() -> 이건뭘까요 지금 시간을 말하는건가요?
지금 저 부분쿼리때문에 홈페이지가 많이 느린거같은데...
정확한 해석좀 해주실분 계신가요 ㅠ.ㅠ
댓글 전체
rep_cat_cd 필드에 인덱스가 걸려있는지 체크해보시고, reg_dm에도 인덱스 여부 체크... 가급적 pk나 index가 걸린 필드로 검색하시거나 정렬하시는걸로 변경하시면 될겁니다.
select if(count(*),'Y','N') is_new from goods
where datediff(now(),reg_dm ) <= 7 and left(rep_cat_cd,6) ='$d_cat_cd'
where datediff(now(),reg_dm ) <= 7 and left(rep_cat_cd,6) ='$d_cat_cd'
ㅠ.ㅠ 속도가똑같네영 힝...
이게 이부분 전체 소스 입니다..........
function GetChildCategory( $d_cat_cd, $is_utf = false )
{
$child_category = array();
$sql = "
select
a.d_cat_nm, a.d_cat_cd
, (
select count(*)
from category_goods b
inner join goods c on b.goods_no = c.goods_no and b.goods_sub = c.goods_sub
where b.cat_type = '$this->cat_type' and b.d_cat_cd = a.d_cat_cd
and c.sale_stat_cl in ('30', '40')
) as goods_cnt
from category a
where a.cat_type = '$this->cat_type'
and a.p_d_cat_cd = '$d_cat_cd'
and a.use_yn = 'Y'
group by a.d_cat_cd
order by a.seq, a.d_cat_cd
";
$rs = $this->db->Execute($sql);
while ( ! $rs->EOF )
{
$d_cat_nm = htmlspecialchars($rs->fields["d_cat_nm"]);
$d_cat_cd = $rs->fields["d_cat_cd"];
$goods_cnt = $rs->fields["goods_cnt"];
$sql_sub = "select if(datediff(now(),reg_dm ) <= '7','Y','N') as is_new from goods WHERE left(rep_cat_cd,6) ='$d_cat_cd' order by reg_dm desc LIMIT 0 , 1 ";
$rs_subt = $this->db->Execute($sql_sub);
$is_new = $rs_subt->fields["is_new"];
$child_category[] = array(
"d_cat_nm" => ( $is_utf ) ? iconv("EUC-KR", "UTF-8", $d_cat_nm) : $d_cat_nm
, "d_cat_cd" => $d_cat_cd
, "goods_cnt" => $goods_cnt
, "is_new" => $is_new
);
$rs->MoveNext();
}
$rs->Close();
return $child_category;
}
function GetChildCategory( $d_cat_cd, $is_utf = false )
{
$child_category = array();
$sql = "
select
a.d_cat_nm, a.d_cat_cd
, (
select count(*)
from category_goods b
inner join goods c on b.goods_no = c.goods_no and b.goods_sub = c.goods_sub
where b.cat_type = '$this->cat_type' and b.d_cat_cd = a.d_cat_cd
and c.sale_stat_cl in ('30', '40')
) as goods_cnt
from category a
where a.cat_type = '$this->cat_type'
and a.p_d_cat_cd = '$d_cat_cd'
and a.use_yn = 'Y'
group by a.d_cat_cd
order by a.seq, a.d_cat_cd
";
$rs = $this->db->Execute($sql);
while ( ! $rs->EOF )
{
$d_cat_nm = htmlspecialchars($rs->fields["d_cat_nm"]);
$d_cat_cd = $rs->fields["d_cat_cd"];
$goods_cnt = $rs->fields["goods_cnt"];
$sql_sub = "select if(datediff(now(),reg_dm ) <= '7','Y','N') as is_new from goods WHERE left(rep_cat_cd,6) ='$d_cat_cd' order by reg_dm desc LIMIT 0 , 1 ";
$rs_subt = $this->db->Execute($sql_sub);
$is_new = $rs_subt->fields["is_new"];
$child_category[] = array(
"d_cat_nm" => ( $is_utf ) ? iconv("EUC-KR", "UTF-8", $d_cat_nm) : $d_cat_nm
, "d_cat_cd" => $d_cat_cd
, "goods_cnt" => $goods_cnt
, "is_new" => $is_new
);
$rs->MoveNext();
}
$rs->Close();
return $child_category;
}
$sql_sub = "select ~~~다움즐에 echo $sql_sub; 해서 몇번이나 실행되는지 보는 것이 먼저일 듯..
동일한 쿼리를 몇번이나 생기는지 등을 보고 쿼리 횟수를 줄이는 방법을 찾아할 것 같아보입니다
동일한 쿼리를 몇번이나 생기는지 등을 보고 쿼리 횟수를 줄이는 방법을 찾아할 것 같아보입니다
현재 노출대는 브랜드갯수만큼 쿼리가 발생하는거 같습니다..