두 테이블, table1 (매우 큰) 및 table2 vakyes 사용하여 table1에서 값을 줄이기 위해 필요한 table2 (훨씬 작은)이 거대한 (8 GB/14126762 행) 있습니다.Sqlite3 느린 업데이트
작은 데이터베이스 (5MB 데이터베이스)를 사용하여 일부 테스트를 수행했지만 괜찮 았습니다. 하지만 지금은 더 큰 데이터베이스에서 사용할 때 영원히 필요하며 전혀 작동하는지 모르겠습니다.
예를 들어 INSERT 명령으로 데이터베이스를 만드는 데 12 분이 걸립니다. SQLite는 트랜잭션에
UPDATE table1
SET vl_empenho = vl_empenho -
(SELECT vl_estorno
FROM table2 WHERE table1.cd_ugestora =
table2.cd_ugestora AND table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho)
WHERE cd_ugestora IN (SELECT table2.cd_ugestora FROM
table2 WHERE table1.dt_ano =
table2.dt_ano AND table1.nu_empenho =
table2.nu_empenho);
미안 능숙하지 내가 원하는 것을 준,하지만 난 경우 중복 모른다 :
성가신 트랜잭션은 다음 것은.
도움 주셔서 감사합니다. 그와
PRAGMA synchronize = OFF;
PRAGMA jorunal_mode = MEMORY;
은, 내가 언급 한 위의 UPDATE를 수행하는 20 분 걸렸다과 :
는 귀하의 관계를 색인 생성합니까? 그렇지 않은 경우 업데이트하기 전에 색인을 생성하는 것이 좋습니다. –
색인을 다음과 같이 색인화해야합니까? CREATE INDEX MyLittleIndex ON table1 (vl_empenho); CREATE INDEX MyLittleIndex2 on table2 (vl_estorno); – nicmano
sqlite 파일을 로컬 또는 네트워크 드라이브에 저장 하시겠습니까? –