동료와 SQL 성능에 대해 논의하고 운영 데이터 저장소 테이블을 유지 관리하는 주제가 등장했습니다. 내 동료 (나보다 훨씬 경험이 많음)는 데이터를 업데이트 할 때 테이블에서 표준 DML 작업을 수행하는 것보다 테이블을 삭제하고 다시 만들고 모든 레코드를 삽입하는 것이 더 빠릅니다. 회의론자이기 때문에, 그리고 이전의 프로그래밍 배경 (R에서)은 완전히 직관적 인 것처럼 보입니다.바닐라 DML 작업 대 DROP, RECREATE, (RE) INSERT - 성능이 더 좋습니까?
단일 레코드는 약입니다. 1.6 KB, 대략 확산. 50 열. 레코드 수는 비즈니스 프로세스마다 다르지만 테이블의 크기는 가장 작고 약 25000 개의 레코드가 있고 최대 레코드 수는 25000000입니다. 일반적인 데이터는 ODS 테이블로로드되며 하루에 테이블 당 0에서 500 개의 레코드가 생성되거나 수정됩니다.
어떤 옵션이 더 확대됨에, 바닐라 DML 작업을 잘 인덱스 테이블 유지 및 사용 (INSERT
,
UPDATE
,
DELETE
) 단일
INSERT
조작으로 대 두 DML 작업 (
DROP TABLE
,
CREATE TABLE
)?
'... 대략 퍼져있다. 50 columns .... '이것은 데이터베이스 테이블이 아닙니다. 그것은 스프레드 시트입니다! – joop
@joop 참으로. 들리는데,이 ODS 테이블의 범위를 제어 할 수는 없습니다. 우리의 소스 시스템은 EAV 데이터 모델에 대한 운영보고를 시도하는 것이 자살이기 때문에 우리는 ODS와 같은 테이블을 만들기 위해 특정 데이터 모델 (EAV)을 사용합니다. 클라이언트가 100 개의 속성을 갖도록 데이터 집합을 구성한 경우 표에는 * k * + 100 열이 있습니다. 여기서 * k *는 상수입니다 (올바르게 기억하는 경우 5). – Marley