postgreSQL 쿼리가 무한 루프에서 실행중인 것 같습니다.

Hotone

이전 질문에 따라 이제 데이터베이스에서 중복을 제거하려고합니다. 거의 동일한 레코드를 식별하기 위해 먼저 하위 쿼리를 실행하고 있습니다 (유일한 차이점은 인덱스 열 "id"). 내 테이블에는 약 9 백만 개의 레코드가 있으며 아래 코드는 약 1 시간 30 분 후에 중단되어야했습니다.

DELETE FROM public."OptionsData" 
WHERE id NOT IN
(
    SELECT id FROM (
        SELECT DISTINCT ON (asofdate, contract, strike, expiry, type, last, bid, ask, volume, iv, moneyness, underlying, underlyingprice) * FROM public."OptionsData"
    ) AS TempTable
);  

하위 쿼리의 결과를 생성하는 데 약 1 분이 걸리므로 전체 쿼리를 실행하는 데 시간이 오래 걸릴 수 있습니다 (?) 또는 내 코드에 뭔가 문제가 있습니까?

a_horse_with_no_name

NOT IN과 DISTINCT를 함께 사용하면 일반적으로 매우 느립니다.

EXISTS를 사용하여 중복을 삭제하려면 일반적으로 더 빠릅니다.

DELETE FROM public."OptionsData"  d1
WHERE EXISTS (select *
              from public."OptionsData" d2
              where d1.id > d2.id
                and (d1.asofdate, d1.contract, d1.strike, d1.expiry, d1.type, d1.last, d1.bid, d1.ask, d1.volume, d1.iv, d1.moneyness, d1.underlying, d1.underlyingprice) 
                    = (d2.asofdate, d2.contract, d2.strike, d2.expiry, d2.type, d2.last, d2.bid, d2.ask, d2.volume, d2.iv, d2.moneyness, d2.underlying, d2.underlyingprice)
              )

이것은에서 가장 작은 값을 가진 행을 유지합니다 id. 가장 많이 id사용 하는 사람들을 유지 하려면 where d1.id < d2.id.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SQL 쿼리가 동일한 수의 행에 영향을주지 않는 것 같습니다. count 문 추가

분류에서Dev

매크로가 무한 루프에서 실행 중입니다.

분류에서Dev

PHP / PDO Mysql에 연결 중이지만 쿼리가 실행되지 않는 것 같습니다.

분류에서Dev

무한 루프가 NASM에서 작동하지 않는 것 같습니까?

분류에서Dev

Mono에서 재 시도하면 무한 루프가 생성되는 것 같습니다.

분류에서Dev

router.navigate에서 특수 문자를 사용하면 무한 루프가 발생하는 것 같습니다.

분류에서Dev

한 페이지에서 실행하는 데 너무 오래 걸리는 많은 쿼리 ... 최적화 할 수없는 것 같습니다.

분류에서Dev

한 페이지에서 실행하는 데 너무 오래 걸리는 많은 쿼리 ... 최적화 할 수없는 것 같습니다.

분류에서Dev

C ++가 문자열에서 실행을 중지하는 것 같습니다.

분류에서Dev

setTimeout이 너무 빨리 실행되는 것 같습니다.

분류에서Dev

내 Ubuntu 터미널 명령이 Python에서 실행중인 것 같습니다.

분류에서Dev

간단한 MySQL 쿼리가 정말 느린 것 같습니다.

분류에서Dev

sqlalchemy를 사용하여 postgresql에서 문자열을 타임 스탬프로 변환 할 수 없습니다. 가능한 모든 방법을 시도했지만 아무것도 작동하지 않는 것 같습니다.

분류에서Dev

알람 관리자에 의해 트리거 된 보류중인 의도가 즉시 실행되는 것 같습니다

분류에서Dev

서버가 실행 중이지만 PHP 서버가 코드를 실행하지 않는 것 같습니다.

분류에서Dev

반복 테스트에 대한 pytest 매개 변수 실행 순서가 잘못된 것 같습니다.

분류에서Dev

Gurobi에서 "모델이 실행 불가능하거나 제한되지 않았습니다."그러나 이것은 잘못된 것 같습니다.

분류에서Dev

문자열의 Python Find 메서드가 실패한 것 같습니다.

분류에서Dev

내`ansible_ssh_pass`가 인벤토리 파일에서 무시되는 것 같습니다.

분류에서Dev

인터프리터가 코드를 직접 실행한다는 것은 무엇을 의미합니까?

분류에서Dev

루프 내의 .load는 마지막 루프에서만 실행되는 것 같습니다.

분류에서Dev

System.out.print가 루프에서 한 번 다른 것을 인쇄하는 방법이 있습니까?

분류에서Dev

실행중인 Python 프로세스가 너무 많습니다.

분류에서Dev

실행중인 Python 프로세스가 너무 많습니다.

분류에서Dev

Android가 onActivityResult에 대한 setResult 호출을 무시하는 것 같습니다.

분류에서Dev

desc에 의한 주문이 실패한 것 같습니다.

분류에서Dev

PHP에서 Oracle 쿼리가 구문 분석으로 실행되지 않습니다. PHP의 날짜 변수로 인한 것일 수 있으므로 날짜 변수를 문자열로 변환하는 방법은 무엇입니까?

분류에서Dev

For 루프가 특정 범위에서 작동하지 않는 것 같습니다.

분류에서Dev

Delegate.BeginInvoke가 다른 PC에서 아무 작업도 수행하지 않는 것 같습니다.

Related 관련 기사

  1. 1

    SQL 쿼리가 동일한 수의 행에 영향을주지 않는 것 같습니다. count 문 추가

  2. 2

    매크로가 무한 루프에서 실행 중입니다.

  3. 3

    PHP / PDO Mysql에 연결 중이지만 쿼리가 실행되지 않는 것 같습니다.

  4. 4

    무한 루프가 NASM에서 작동하지 않는 것 같습니까?

  5. 5

    Mono에서 재 시도하면 무한 루프가 생성되는 것 같습니다.

  6. 6

    router.navigate에서 특수 문자를 사용하면 무한 루프가 발생하는 것 같습니다.

  7. 7

    한 페이지에서 실행하는 데 너무 오래 걸리는 많은 쿼리 ... 최적화 할 수없는 것 같습니다.

  8. 8

    한 페이지에서 실행하는 데 너무 오래 걸리는 많은 쿼리 ... 최적화 할 수없는 것 같습니다.

  9. 9

    C ++가 문자열에서 실행을 중지하는 것 같습니다.

  10. 10

    setTimeout이 너무 빨리 실행되는 것 같습니다.

  11. 11

    내 Ubuntu 터미널 명령이 Python에서 실행중인 것 같습니다.

  12. 12

    간단한 MySQL 쿼리가 정말 느린 것 같습니다.

  13. 13

    sqlalchemy를 사용하여 postgresql에서 문자열을 타임 스탬프로 변환 할 수 없습니다. 가능한 모든 방법을 시도했지만 아무것도 작동하지 않는 것 같습니다.

  14. 14

    알람 관리자에 의해 트리거 된 보류중인 의도가 즉시 실행되는 것 같습니다

  15. 15

    서버가 실행 중이지만 PHP 서버가 코드를 실행하지 않는 것 같습니다.

  16. 16

    반복 테스트에 대한 pytest 매개 변수 실행 순서가 잘못된 것 같습니다.

  17. 17

    Gurobi에서 "모델이 실행 불가능하거나 제한되지 않았습니다."그러나 이것은 잘못된 것 같습니다.

  18. 18

    문자열의 Python Find 메서드가 실패한 것 같습니다.

  19. 19

    내`ansible_ssh_pass`가 인벤토리 파일에서 무시되는 것 같습니다.

  20. 20

    인터프리터가 코드를 직접 실행한다는 것은 무엇을 의미합니까?

  21. 21

    루프 내의 .load는 마지막 루프에서만 실행되는 것 같습니다.

  22. 22

    System.out.print가 루프에서 한 번 다른 것을 인쇄하는 방법이 있습니까?

  23. 23

    실행중인 Python 프로세스가 너무 많습니다.

  24. 24

    실행중인 Python 프로세스가 너무 많습니다.

  25. 25

    Android가 onActivityResult에 대한 setResult 호출을 무시하는 것 같습니다.

  26. 26

    desc에 의한 주문이 실패한 것 같습니다.

  27. 27

    PHP에서 Oracle 쿼리가 구문 분석으로 실행되지 않습니다. PHP의 날짜 변수로 인한 것일 수 있으므로 날짜 변수를 문자열로 변환하는 방법은 무엇입니까?

  28. 28

    For 루프가 특정 범위에서 작동하지 않는 것 같습니다.

  29. 29

    Delegate.BeginInvoke가 다른 PC에서 아무 작업도 수행하지 않는 것 같습니다.

뜨겁다태그

보관