SQL 성능 : 하나의 테이블을 두 개에 삽입

앤디 N

제 경력을 쌓는 동안 평평하고 비정규 화 된 데이터를 정규화 된 구조에 삽입해야하는 많은 경우를 접했습니다.

이를 위해 저는 종종 CTE 삽입물을 사용했습니다.

CREATE TABLE raw_data (
    foo varchar,
    bar_1 varchar,
    bar_2 varchar
);

INSERT INTO raw_data VALUES ('A', 'A1', 'A2');
INSERT INTO raw_data VALUES ('B', 'B1', 'B2');

CREATE TABLE foo (
    id int PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    value varchar NOT NULL
);

CREATE TABLE bar (
    id int PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
    value varchar NOT NULL,
    foo_id int NOT NULL,
    CONSTRAINT fk_bar_foo FOREIGN KEY (foo_id) REFERENCES foo(id)
);

WITH new_foos AS (
    INSERT INTO foo (value)
    SELECT foo FROM raw_data
    RETURNING *
)
INSERT INTO bar (foo_id, value)
SELECT
    f.id,
    unnest(ARRAY[r.bar_1, r.bar_2])
FROM new_foos f
JOIN raw_data r
    ON r.foo = f.value;

그러나 성능 측면에서 보면 잘 작동하지만 원시 데이터 테이블로 돌아가서 다시 스캔해야하는 것은 부끄러운 것 같습니다. 즉 한 번 삽입을 수행 foo한 다음 다시 삽입합니다 bar.

이것이 최적의 접근 방식인지 아니면 개선을 위해 무엇을 할 수 있는지 알고 싶습니다.

Belayer

음 그렇습니다.하지만 생각해 보면 Json을 담을 충분한 메모리가 있다면 테이블을 보관할 충분한 메모리가있는 것입니다. 따라서 데이터를 두 번 전달하는 것이 더 빠를 수 있습니다. 디스크 1 회, 메모리 1 회. DBMS는 이러한 이유로 가장 많이 사용 된 데이터를 메모리에 유지하는 경향이 있습니다. 면책 조항 : 내 주요 경험은 Oracle에 대한 것이므로 여기에서 Postgres로 투영 할 수 있지만이 버퍼링을 수행한다고 생각합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 개의 다른 테이블에서 두 개의 값을 하나의 테이블에 삽입

분류에서Dev

두 개의 다른 테이블에 데이터를 삽입하는 SQL

분류에서Dev

두 개의 다른 테이블에 데이터를 삽입하는 SQL

분류에서Dev

C #에서 두 개의 db 호출을하는 대신 SQL의 테이블에 관련 항목 삽입

분류에서Dev

방법 만 SQL 테이블에 하나 개의 컬럼을 삽입?

분류에서Dev

SQL Server 2008-두 개의 다른 테이블에서 열에 삽입

분류에서Dev

SQL Server : 첫 번째 삽입의 출력을 사용하여 두 번째 테이블에 삽입

분류에서Dev

SQL-같은 값을 두 테이블에 동시에 삽입하는 방법

분류에서Dev

두 테이블의 값을 세 번째 테이블에 삽입

분류에서Dev

두 개의 다른 테이블에서 테이블에 삽입

분류에서Dev

피벗을 사용하여 두 개의 개별 테이블에 MySQL 삽입

분류에서Dev

두 테이블의 SQL 열을 곱하고 별도의 열에 삽입하는 방법은 무엇입니까?

분류에서Dev

PHP 두 테이블에 값을 삽입하고 해당 테이블의 키를 링크 테이블에 삽입

분류에서Dev

두 개의 열을 기반으로 다른 Postgres에서 하나의 테이블에 삽입

분류에서Dev

MySQL 성능, 하나 또는 두 개의 테이블

분류에서Dev

Oracle INSERT를 하나의 쿼리로 두 테이블에 삽입

분류에서Dev

SQL Oracle SQL Developer에서 개별 테이블의 두 열을 하나로 결합

분류에서Dev

SQL : 두 열 곱하기 (다른 테이블에서) 및 삽입 / 업데이트 (테이블 중 하나)

분류에서Dev

laravel 5.1에서 관련된 두 개의 테이블을 삽입하는 방법

분류에서Dev

하나의 레코드를 두 개의 레코드에 생성 한 다음 테이블에 삽입하려면 어떻게해야합니까?

분류에서Dev

이미 존재하는 테이블에 두 개의 테이블 값 삽입

분류에서Dev

하나의 단일 삽입 SQL로 두 테이블 업데이트

분류에서Dev

하나의 테이블에서 두 개의 where 절을 두 개의 새 행으로 SQL

분류에서Dev

SQL 서버 : 테이블에 행을 삽입하여 100 개마다 "일괄 ID"생성?

분류에서Dev

두 테이블에 삽입하는 방법; 하나는 한 행을 삽입하고 다른 하나는 여러 행을 삽입하며 두 테이블에는 동일한 값을 가진 하나의 열이 있습니다.

분류에서Dev

HTML 테이블 Perl의 열에 두 개의 배열 삽입

분류에서Dev

열이 하나만있는 SQL 테이블 (기본 키)에서 선택 / 삽입의 시간 복잡성

분류에서Dev

mysql 테이블에 두 개의 SELECT 문 삽입

분류에서Dev

VBA 테이블에 두 개의 목록 상자 값 삽입

Related 관련 기사

  1. 1

    두 개의 다른 테이블에서 두 개의 값을 하나의 테이블에 삽입

  2. 2

    두 개의 다른 테이블에 데이터를 삽입하는 SQL

  3. 3

    두 개의 다른 테이블에 데이터를 삽입하는 SQL

  4. 4

    C #에서 두 개의 db 호출을하는 대신 SQL의 테이블에 관련 항목 삽입

  5. 5

    방법 만 SQL 테이블에 하나 개의 컬럼을 삽입?

  6. 6

    SQL Server 2008-두 개의 다른 테이블에서 열에 삽입

  7. 7

    SQL Server : 첫 번째 삽입의 출력을 사용하여 두 번째 테이블에 삽입

  8. 8

    SQL-같은 값을 두 테이블에 동시에 삽입하는 방법

  9. 9

    두 테이블의 값을 세 번째 테이블에 삽입

  10. 10

    두 개의 다른 테이블에서 테이블에 삽입

  11. 11

    피벗을 사용하여 두 개의 개별 테이블에 MySQL 삽입

  12. 12

    두 테이블의 SQL 열을 곱하고 별도의 열에 삽입하는 방법은 무엇입니까?

  13. 13

    PHP 두 테이블에 값을 삽입하고 해당 테이블의 키를 링크 테이블에 삽입

  14. 14

    두 개의 열을 기반으로 다른 Postgres에서 하나의 테이블에 삽입

  15. 15

    MySQL 성능, 하나 또는 두 개의 테이블

  16. 16

    Oracle INSERT를 하나의 쿼리로 두 테이블에 삽입

  17. 17

    SQL Oracle SQL Developer에서 개별 테이블의 두 열을 하나로 결합

  18. 18

    SQL : 두 열 곱하기 (다른 테이블에서) 및 삽입 / 업데이트 (테이블 중 하나)

  19. 19

    laravel 5.1에서 관련된 두 개의 테이블을 삽입하는 방법

  20. 20

    하나의 레코드를 두 개의 레코드에 생성 한 다음 테이블에 삽입하려면 어떻게해야합니까?

  21. 21

    이미 존재하는 테이블에 두 개의 테이블 값 삽입

  22. 22

    하나의 단일 삽입 SQL로 두 테이블 업데이트

  23. 23

    하나의 테이블에서 두 개의 where 절을 두 개의 새 행으로 SQL

  24. 24

    SQL 서버 : 테이블에 행을 삽입하여 100 개마다 "일괄 ID"생성?

  25. 25

    두 테이블에 삽입하는 방법; 하나는 한 행을 삽입하고 다른 하나는 여러 행을 삽입하며 두 테이블에는 동일한 값을 가진 하나의 열이 있습니다.

  26. 26

    HTML 테이블 Perl의 열에 두 개의 배열 삽입

  27. 27

    열이 하나만있는 SQL 테이블 (기본 키)에서 선택 / 삽입의 시간 복잡성

  28. 28

    mysql 테이블에 두 개의 SELECT 문 삽입

  29. 29

    VBA 테이블에 두 개의 목록 상자 값 삽입

뜨겁다태그

보관