고유 한 문자열 필드와 몇 개의 정수 필드가있는 데이터베이스 테이블이 있습니다. 문자열 필드는 보통 10-100 자입니다.수천 개의 레코드를 테이블에 삽입하는 가장 효율적인 방법은 무엇입니까? (MySQL, Python, Django)
1 분에 한 번 다음과 같은 시나리오가 있습니다. 테이블의 레코드 구조에 해당하는 2-10,000 개의 튜플 목록을받습니다.
[("hello", 3, 4), ("cat", 5, 3), ...]
이러한 튜플을 모두 테이블에 삽입해야합니다 (데이터베이스에 이러한 문자열이 나타나지 않는다고 가정). 설명을 위해 InnoDB를 사용하고 있는데이 테이블에 대한 자동 증분 기본 키를 가지고 있는데 문자열은 PK가 아닙니다.
내 코드는 현재이 목록을 통해 반복은 각 튜플에 해당하는 값으로 파이썬 모듈 객체를 생성하고, ".save()", 무언가과 같이 호출
이@transaction.commit_on_success
def save_data_elements(input_list):
for (s, i1, i2) in input_list:
entry = DataElement(string=s, number1=i1, number2=i2)
entry.save()
이 코드는 현재 하나입니다 내 시스템의 성능 병목 현상에 대해 잘 알고 있으므로 최적화 할 방법을 찾고 있습니다.
예를 들어, 100 개의 튜플에 대한 INSERT 명령을 포함하는 SQL 코드를 생성하고 실행할 수는 있지만 성능이 향상되는지는 알 수 없습니다.
이러한 프로세스를 최적화하기위한 제안이 있으십니까?
감사합니다.
좋은 질문입니다! 그래서 최고의 답은 텍스트 파일을 생성하거나 문자열 연결을 통해 SQL 쿼리를 생성하는 것 같습니다. 이것은 약간 만족스럽지 않습니다! – JAL