SQL 효율성 : 일부 열과 모든 열 업데이트

Bgusach

행이 변경되었는지 확인하고 변경된 경우 업데이트해야합니다. 내 프로그램에는 새 값이있는 사전과 DB에있는 행의 이전 정보가있는 두 번째 사전이 있습니다.

두 가지 접근 방식을 염두에 두었습니다.

옵션 A 행 값과 비교하여 사전을 반복하고 다른 경우 모든 필드를 중단하고 업데이트합니다. 즉 UPDATE 문에는 모든 필드와 해당 값이 포함됩니다.

코드 (이 경우에는 파이썬이지만 이해하기 매우 쉽습니다)는 다음과 같습니다.

for key, value in incoming_dictionary.iteritems():
    if old_dictionary[key] != value:
         update_row(incoming_dictionary)
         break

다음과 같은 SQL 문이 생성됩니다.

UPDATE mytable SET field1=... field2=... fieldN=... WHERE = ...

옵션 B 값을 비교하는 딕셔너리에 대해 루프를 수행하고 다른 딕셔너리에 저장해야하며 루프의 끝에서 행을 업데이트하여 UPDATE 문을 실제로 다른 값으로 제한합니다.

changed_fields = {}
for key, value in incoming_dictionary.iteritems():
    if old_dictionary[key] != value:
         changed_fields[key] = value

update_fields(changed_fields)

다음과 같은 SQL이 생성됩니다.

UPDATE mytable SET field1=... WHERE = ...

두 번째 것이 SQL 수준에서 더 효율적이어야한다고 말하고 싶지만 확실하지 않습니다. 그리고 프로그래밍 수준에서 약간의 오버 헤드가 있습니다.

MS SQL Server로 작업하고 있지만 내 프로그램은 다른 RBDMS를 처리합니다. 감사.

고든 리노 프

귀하의 질문에 대한 일반적인 답변이 없습니다. 다른 데이터베이스는 업데이트를 다르게 수행합니다. 예를 들어 MySQL은 변경 사항이없는 레코드를 업데이트하지 않습니다 (비교는 업데이트 작업의 일부 임).

일반적으로 업데이트 비용은 레코드 가져 오기, 업데이트 로깅 및 인덱스 수정을 기반으로합니다. 이러한 작업은 메모리의 데이터 변경을 넘어서는 작업입니다. 지침으로, 데이터베이스 채우기를 최적화하는 것보다 적절한 레코드를 빠르게 가져올 수있는 인덱스를 갖는 것이 더 중요합니다. 후자는 일반적으로 메모리 내 작업입니다.

이 지침은 모든 경우에 작동하지 않을 수 있습니다. 예를 들어 여러 페이지에 걸쳐있는 큰 필드가 있으면 성능에 영향을 미칩니다. 인덱스가있는 필드에 대한 업데이트는 성능에 영향을줍니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

일치하는 배열 및 내부 배열의 모든 개체 업데이트

분류에서Dev

효율성 : 동적 할당과 일정한 길이 배열

분류에서Dev

기념일 업데이트 후 Windows 10에서 모든 앱 열 비활성화

분류에서Dev

SQL 쿼리-문자열의 모든 부분과 일치

분류에서Dev

모든 varchar 열 행을 업데이트 SQL은

분류에서Dev

MySQL : 일부 중복 열에서 모든 중복 업데이트에 삽입

분류에서Dev

수백만 개의 행 테이블에서 모든 단일 행의 INT 열을 효율적으로 업데이트하는 방법

분류에서Dev

다른 열이 SQL 목록의 값과 일치 할 때 열 값 업데이트

분류에서Dev

대규모 데이터 세트를위한 PROC SQL 업데이트 효율성

분류에서Dev

모든 행에서 열 업데이트

분류에서Dev

모든 열이있는 경우에만 업데이트-SQL Server 2008

분류에서Dev

이전에 정의 된 문자열 집합과 일치하는 문자열의 모든 접두사를 가져 오는 효율적인 구조

분류에서Dev

Spark SQL-하나를 업데이트하는 동안 모든 열 선택

분류에서Dev

큰 팬더 데이터 프레임의 모든 열을 동일한 데이터 프레임의 다른 모든 열과 곱하는 가장 효율적인 방법

분류에서Dev

phpMyAdmin을 사용하여 단일 열 내의 모든 행 업데이트

분류에서Dev

다른 열의 모든 행을 SQL의 단일 행과 단일 열로 표시

분류에서Dev

모든 행 데이터를 열 정보 목록과 일치

분류에서Dev

내용의 일부만 변경되는 레코드의 SQL 업데이트 열

분류에서Dev

SQL A 열의 모든 값에 대해 A 열의 값이 동일한 B 열의 모든 값을 연결합니다.

분류에서Dev

열이 null로 설정된 모든 행의 열 업데이트

분류에서Dev

열의 값이 다른 데이터 세트의 열 값과 일치하지 않는 모든 행 삭제

분류에서Dev

행의 각 열을 데이터베이스 SQL의 모든 행과 비교

분류에서Dev

열의 모든 데이터를 가져 오는 SQL 내부 조인

분류에서Dev

Excel에 모든 데이터가 표시되지 않음 (한 열의 마지막 셀과 일부 이상한 값)

분류에서Dev

SQL-동일한 열이 여러 개인 모든 행 선택

분류에서Dev

SQL-열의 모든 값이 동일한 행 선택

분류에서Dev

정규식 SQL의 모든 숫자 파일 이름을 비 검색 열의 값으로 결과를 교체

분류에서Dev

oracle sql query : 별도의 열과 동일한 ID를 가진 테이블의 모든 항목 가져 오기

분류에서Dev

SQL-열 값이 패턴과 일치하면 모든 레코드를 반환합니까?

Related 관련 기사

  1. 1

    일치하는 배열 및 내부 배열의 모든 개체 업데이트

  2. 2

    효율성 : 동적 할당과 일정한 길이 배열

  3. 3

    기념일 업데이트 후 Windows 10에서 모든 앱 열 비활성화

  4. 4

    SQL 쿼리-문자열의 모든 부분과 일치

  5. 5

    모든 varchar 열 행을 업데이트 SQL은

  6. 6

    MySQL : 일부 중복 열에서 모든 중복 업데이트에 삽입

  7. 7

    수백만 개의 행 테이블에서 모든 단일 행의 INT 열을 효율적으로 업데이트하는 방법

  8. 8

    다른 열이 SQL 목록의 값과 일치 할 때 열 값 업데이트

  9. 9

    대규모 데이터 세트를위한 PROC SQL 업데이트 효율성

  10. 10

    모든 행에서 열 업데이트

  11. 11

    모든 열이있는 경우에만 업데이트-SQL Server 2008

  12. 12

    이전에 정의 된 문자열 집합과 일치하는 문자열의 모든 접두사를 가져 오는 효율적인 구조

  13. 13

    Spark SQL-하나를 업데이트하는 동안 모든 열 선택

  14. 14

    큰 팬더 데이터 프레임의 모든 열을 동일한 데이터 프레임의 다른 모든 열과 곱하는 가장 효율적인 방법

  15. 15

    phpMyAdmin을 사용하여 단일 열 내의 모든 행 업데이트

  16. 16

    다른 열의 모든 행을 SQL의 단일 행과 단일 열로 표시

  17. 17

    모든 행 데이터를 열 정보 목록과 일치

  18. 18

    내용의 일부만 변경되는 레코드의 SQL 업데이트 열

  19. 19

    SQL A 열의 모든 값에 대해 A 열의 값이 동일한 B 열의 모든 값을 연결합니다.

  20. 20

    열이 null로 설정된 모든 행의 열 업데이트

  21. 21

    열의 값이 다른 데이터 세트의 열 값과 일치하지 않는 모든 행 삭제

  22. 22

    행의 각 열을 데이터베이스 SQL의 모든 행과 비교

  23. 23

    열의 모든 데이터를 가져 오는 SQL 내부 조인

  24. 24

    Excel에 모든 데이터가 표시되지 않음 (한 열의 마지막 셀과 일부 이상한 값)

  25. 25

    SQL-동일한 열이 여러 개인 모든 행 선택

  26. 26

    SQL-열의 모든 값이 동일한 행 선택

  27. 27

    정규식 SQL의 모든 숫자 파일 이름을 비 검색 열의 값으로 결과를 교체

  28. 28

    oracle sql query : 별도의 열과 동일한 ID를 가진 테이블의 모든 항목 가져 오기

  29. 29

    SQL-열 값이 패턴과 일치하면 모든 레코드를 반환합니까?

뜨겁다태그

보관