database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 26903 게시물 읽기
No. 26903
로직이 잘못되었는지 느려집니다.
작성자
Qydl
작성일
2007-08-01 16:00ⓒ
2007-08-01 16:02ⓜ
조회수
1,785

임시테이블을 만들어놓고

셀렉트쿼리로 전체 리스트를 뽑습니다 ( 약 12000개 )

뽑은 리스트들과 새로운 항목들을 임시테이블에 넣는다.

문제가 되는것은 약 12000개의 데이터가 포문 안에서 인설트 되는부분이
느립니다. 12000번 루프가 돌아서 그런거같은데 로직을 바꺼야하는지
해결방법좀 제시해 주세여

//임시테이블 생성
$temporary_query = "
    CREATE  TEMPORARY TABLE temp_resut(
    product_class enum(  'CD' ,'VCD' ) ,
    cd_order_no varchar( 20 ) ,
    name_eg varchar( 50 ),
    name_kr varchar( 50 ),
    manufacture_name  varchar( 50 ),
    thumb int( 11 ) ,
    download int( 11 ) ,
    reg_date datetime
    )
    TYPE=HEAP
    ";

$mdb->query( $temporary_query );

// 전체 리스트 목록  
$query = "
   SELECT SQL_CACHE
     pc.order_no ,
     pc.name_eg ,
     pc.name_kr ,
     pc.cd_sell_status ,
     pc.vcd_sell_status ,
     pc.virtual_quantity_use ,
     pc.reg_date ,
     pmc.manufacture_name
   FROM pc테이블 as pc ,
     pmc테이블 as pmc
   WHERE pc.code = pmc.code
   $class_query
";

$db->query( $query );
?>

total_record();$loop++ ) : ?>
fetch();

$rs_cd_no         = $db->result( 'cd_no' );
$rs_order_no     = $db->result( 'order_no' );
$rs_name_eg    = htmlspecialchars( $db->result( 'name_eg' ) );
$rs_name_kr     = htmlspecialchars( $db->result( 'name_kr' ) );
$rs_cd_sell_status    = $db->result( 'cd_sell_status' );
$rs_vcd_sell_status   = $db->result( 'vcd_sell_status' );
$rs_virtual_quantity_use  = $db->result( 'virtual_quantity_use' );
$rs_manufacture_name  = $db->result( 'manufacture_name' );
$rs_image_no    = $db->result( 'image_no' );
$rs_reg_date      = $db->result( 'reg_date' );


if( ('Yes' == $rs_vcd_sell_status AND 'No'== $rs_cd_sell_status) )
{
 $class = 'VCD';
}
else
{
 $class = 'CD';
}


// 등록된 이미지
$query = "
    SELECT SQL_CACHE
      count(*) as thumb
    FROM pi테이블
    WHERE order_no = '$rs_order_no'
  
   
 ";
$db2->query( $query );
$db2->fetch();
$rs_thumb = $db2->result( 'thumb' );


// 다운로드등록 이미지
$query = "
    SELECT  SQL_CACHE
       count(*) as downlaod
    FROM    pci테이블 as pci
    LEFT JOIN  pi테이블 as pi
    ON   pci.image_no = pi.image_no
    WHERE  pi.order_no = '$rs_order_no'
   
   
 ";
$db3->query( $query );
$db3->fetch();
$rs_downlaod = $db3->result( 'downlaod' );


// 얻은 모든값들을 임시테이블에 다 넣음
$query2 = "INSERT INTO temp_resut(
        product_class ,
        order_no ,
        name_eg ,
        name_kr ,
        manufacture_name ,
        thumb ,
        download ,
        reg_date
       )
      values(
        '$class' ,
        '$rs_order_no' ,
        '$rs_name_eg' ,
        '$rs_name_kr' ,
        '$rs_manufacture_name' ,
        '$rs_thumb' ,
        '$rs_downlaod' ,
        '$rs_reg_date'

         )
";
$mdb->query( $query2 );
?>

이 글에 대한 댓글이 총 1건 있습니다.

지금 쿼리는 하나의 쿼리로 가능할것 같습니다. ~~~~~

insert into TMP_TB
select ...... from 해당 테이블을 조인하면 가능할것 같은데여.

각 테이블 구조를 넣어주시면 작성하기 쉬울듯 합니다.

반화넬(반씨아찌)님이 2007-08-02 10:22에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
26906쿼리속도가 너무 늦습니다. [1]
Qydl
2007-08-02
2186
26905not in, in 쿼리 대신 사용.. [1]
jsplove
2007-08-02
1872
26904Aborted_connects 수가 올라가서 정상 접속에 50% 을 넘습니다.
맨발
2007-08-01
2122
26903로직이 잘못되었는지 느려집니다. [1]
Qydl
2007-08-01
1785
26902안녕하세요.~! 오랫만에..질문 올립니다...^^; [1]
박남춘
2007-08-01
1658
26901mysql5.0에서의 트랜잭션 [1]
이창형
2007-07-31
2427
26900mysql 의 bin log 파일 삭제해도 문제없나요? [2]
홍진수
2007-07-31
2567
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.019초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다