업로드 할 컴퓨터에서 CSV (사전 결정된 형식)를 선택할 수있는 클라이언트 용 업 로더 (PHP 사용)를 설정 중입니다. CSV는 4000-5000 행을 가질 가능성이 큽니다. Php는 CSV의 각 행을 읽고 DB 테이블에 직접 삽입하여 파일을 처리합니다. 그 부분은 쉽습니다.MySQL에 혼합 덮어 쓰기/추가 일괄 쓰기가 가능합니까?
그러나이 데이터를 데이터베이스 테이블에 추가하기 전에 3 개의 열 (A, B 및 C)을 검토하고 해당 필드의 일치하는 콤보가 이미 있는지 확인하고 싶습니다. 테이블 그래서 만약 내가 오히려 그 행을 추가하는 것보다 오히려 업데이 트됩니다. 일치하는 콤보 3 개 열이 없다면 테이블에 데이터를 추가하고 행을 INSERT하는 것이 좋습니다.
내 첫 번째 생각은 내 테이블에서 고유 인덱스 인 A, B 및 C 열을 만들 수 있으며 모든 행을 INSERT하고 INSERT (내 고유 인덱스의 제한으로 인해) INSERT를 감지하고 그런 다음 업데이트하십시오. 이 방법은 각 테이블에 이미 일치하는 콤보가 있는지를보기 위해 각 행에 대해 별도의 SELECT 쿼리를 작성하는 것보다 효율적일 수 있습니다.
세 번째 방법은 단순히 MySQL 고유 인덱스를 사용하지 않고 모든 것을 추가 한 다음 클라이언트가 나중에 해당 테이블을 쿼리 할 때만 최신 고유 조합을 가져 오는 것입니다. 그러나 나는 그 테이블에 쓸모없는 데이터 톤을 피하려고 노력하고있다.
우수 사례 또는 영리한 접근법에 대한 생각? 당신은 (A, B, C) 열에 고유 인덱스를 추가하는 경우
매우 편리한 기술입니다. – phirschybar
기꺼이 도와 드리겠습니다. 이것은 내가 얻은 편리한 트릭입니다. –