2011-09-07 5 views
0

저는 아주 기본적인 웹 크롤러를 가지고 있습니다. 찾은 링크를 저장하는 데이터베이스 테이블에는 URL 필드에 고유 색인이 있습니다.먼저 쿼리가 고유하거나 쿼리에 실패하는 것이 더 빠릅니까?

내가 지금까지 가지고있는 로직이 링크가 이미 존재하는 경우 페이지에서 볼 때마다 링크, 링크 테이블을 쿼리합니다 응용 프로그램을 볼 수 있다는 것입니다. 아직 존재하지 않으면 삽입 할 것입니다. 스크립트에 대한 최상의 성능을 얻으려고 노력에서

, 그냥 링크가 이미 링크가 삽입 얻을하려고하면 어쨌든 실패 때문에 존재하는지 확인하는 초기 쿼리를 건너 괜찮을까요?

이 때문에이 더 삽입 시도 할 것이다, 그러나 발견 된 모든 링크에 대한 전체 선택 쿼리에 대한 필요성을 제거한다.

답변

1

나는 실행을 선택 첫번째 빨리 될 것 같아요,하지만 테스트는 직관보다 더 신뢰할 수있다.

결과는 선택, 성공적으로 삽입 실패 삽입물의 상대 속도에 따라 달라집니다. 실패한 삽입에 대한 오류를 생성하는 것은 추가 선택보다 훨씬 더 많은 시간이 걸릴 수 있지만, 드물게 발생하는 경우 추가 선택보다 적습니다.

는 예를 들어, 선택은 성공적인 삽입은 20ms의 소요 실패한 삽입 10ms의 소요, 1ms의 소요 말한다. (모든 숫자가 완전히 발명 됨). 100 개 항목 99 개 중 하나라도 성공하면 100 개 선택/삽입에 2080ms가 걸리며 삽입/실패에는 1990 년에 불과합니다. 반면에 100 개의 인서트 10 개만 성공하면 100 개의 인서트/페일은 100ms가 걸리며 100 개의 인서트/인서트는 300ms가 걸립니다.

짧은 대답 : 시간.

관련 문제