2012-01-13 2 views
1

mysql의 임시 테이블에 문제가 있습니다.MySQL 임시 테이블 SELECT COUNT (*) 다양한 결과 반환

CREATE TEMPORARY TABLE IF NOT EXISTS tmp_general_detalle_entrada_salida (

    numero_registro INT(10), 
    numero_admision INT(10), 
    id_referencia INT(10), 
    facturable CHAR(1), 
    fecha_acceso DATE, 
    cod_via INT(10), 
    anexo2 VARCHAR(40), 
    anexo3 VARCHAR(40), 
    cod_bodega CHAR(3), 
    id_centro_costo INT(10), 
    cod_medico INT(10), 
    cantidad FLOAT(15,2), 
    precio_venta_bruto FLOAT(15,2), 
    descuento FLOAT(15,2), 
    precio_venta_neto FLOAT(15,2), 
    copago FLOAT(15,2), 
    consumido CHAR(1) 

)ENGINE = INNODB; 

내가 임시 테이블에 간단한 select count(*) from tmp_general_detalle_entrada_salida을, 쿼리가 반환하는 임의의 값 (5, 4, 5, 5, 0, 등 '테이블이 존재하지 않는') :이 임시 테이블을 생성 . mysql 5.0.51b 및 PHP 5.2.6을 사용하고 있습니다.

+0

InnoDB에서는'SELECT COUNT (*)'가 가장 좋습니다. –

답변

2

숫자가 변경되면 선택 사항간에 데이터가 변경되는 것처럼 보입니다. 테이블이 존재하지 않으므로 선택 사이에 연결이 닫혔다는 것을 나타냅니다. 연결이 닫히면 임시 테이블이 사라집니다.

당신은

set global general_log='ON'; 
set global general_log_file='/tmp/mysql.log' 

이 /tmp/mysql.log 선택하는 연결에서 모든 단일 쿼리를 기록합니다 실행 시도 할 수 있습니다. 이렇게하면 서버에서 볼 수있는 것에 대한 더 많은 통찰력을 얻을 수 있습니다.

+0

임시 테이블은 임시 테이블이 현재 세션의 지속 기간 동안 만 존재하고 끝나면 자동으로 삭제된다는 점에서 일반 테이블과 다릅니다. (웹 응용 프로그램의 경우 현재 페이지 나 스크립트가 완료되면 임시 테이블이 일반적으로 에 존재하지 않음을 의미합니다.) –