2013-07-18 3 views
1

PHP 프로젝트에서 웹 스크래핑과 관련된 작업을하고 있으며 내 목표는 mysql 데이터베이스에 데이터를 저장하는 것입니다. 저는 9 개의 컬럼에서 3 개의 인덱스에 고유 한 인덱스를 사용하고 있습니다. 5k 이상.mysql 데이터베이스 삽입의 성능을 향상시키는 방법

  1. 배열에 값을 넣은 다음 데이터베이스에 삽입하기 전에 비교할 때 프로그램 수준에서 고유 한 데이터를 검사해야합니까?
  2. 내 데이터베이스 삽입 속도를 높일 수있는 방법이 있습니까?
+0

당신은 당신이 무엇을 삽입하고 있는지, 그리고 그 단일 쿼리가 당신이 먼저 일치하는 경우 더 자세히 설명 할 수 있습니다. – azngunit81

+0

메신저는 문자 길이가 평균 30이고, 거리 주소 평균 길이가 40이고, 웹 사이트 등인 사업체의 이름을 삽입합니다. 프로그램에없는 데이터베이스 수준에서 일치합니다. –

답변

0

현재 어떤 필드에도 색인을 제외하고있는 표의 사본을 만들 수 있습니다. 이 테이블에 데이터를 저장하십시오.

그런 다음 이벤트를 사용하여 임시 테이블에서 주 테이블로 데이터를 이동하십시오. 일단 데이터가 주 테이블로 옮겨지면 temp 테이블에서 if를 삭제하십시오.

0

triger로 업데이트를 팔로우 할 수 있습니다. 업데이트 테이블을 수행해야하며이 테이블에 대해 오른쪽 트리거가 있어야합니다.

1

사용 PDO, mysqli_ * 기능, 당신은 당신의 질의에 "INSERT가 무시"사용할 수있는 데이터베이스

0

에 삽입을 증가시킵니다. 이렇게하면 고유 한 제약 조건을 위반할 경우 레코드가 삽입되지 않습니다.

예 :

INSERT IGNORE INTO table_name SET name = 'foo', value = 'bar', id = 12345; 
0

지금이 안티 SQL 패턴입니다 중복 테이블을 생성하지 않으며 그것이 더 어려워 데이터로 작업 할 수 있습니다 마십시오.

어쩌면 PDO와 준비된 진술은 약간의 향상을 가져올 것이지만 그로부터의 경이를 기대하지는 않습니다.

멀티 테이블 INSERT IGNORE는 또한 약간의 향상을 가져올 수 있지만 그럴 기미는 없습니다.

당신은 최대 패킷 크기에 따라 유지 명심 을, (값을) (값) 가치 (값) database.table (열) INTO 그래서

INSERT 같은 multiinsert 쿼리를 생성해야하는 MySQL의 것 있다. 이렇게하면 색인 파일을 한 번 업데이트해야합니다.

관련 문제