2014-09-27 1 views
0

저는 채용 회사를 소유 한 친구를위한 IT 후보자 데이터베이스를 구축 중입니다. 그는 현재 Excel 스프레드 시트에 수천 명의 후보 데이터베이스를 보유하고 있으며이를 mySQL 데이터베이스로 변환하고 있습니다.내 데이터베이스 디자인에서 검색 속도가 느려 집니까?

각 후보자는 기술로 기술 필드를 가지고 있습니다. "javascript, php, nodejs ..."등

내 친구도 데이터베이스를 검색 할 직원을 보유하고 있지만 그에 따라 특정 기술을 가진 후보자가 검색 결과에 표시되도록하고 싶습니다. 그들이 보안상의 이유로 어떤 공석을 벌이고 있는지 (그래서 그들은 데이터베이스의 많은 부분을 훔치지 않고 데이터로 자신의 모집 회사를 구성하지 않습니다).

직원이 자바 스크립트 역할을하고 있다면 직원이 기술 분야에 "javascript"라는 단어가있는 검색 결과로 제한됩니다. 그래서 그들은 "Michael"이라는 이름의 모든 후보자를 찾으면 자바 스크립트 기술을 가진 "Michaels"만 반환 할 것입니다.

내 관심사는 때로는 긴 문자열 일 수있는 기술 분야를 검색해야하므로 검색 할 때마다 검색이 너무 오래 걸릴 수 있다는 것입니다.

내 관심사를 정당화 할 수 있습니까? 그렇다면 최적화 할 수있는 방법이 있습니까?

+1

전체 텍스트 검색이 완화 될 수는 있지만 기술을 별도의 테이블로 정규화하지 않으면 속도가 느려지지만 디자인에 대한 설명에서 단어 색인을 언급하지 않았습니다. –

+0

이전에 대화를 나눴습니다. 내 친구와 그는 너무 많은 기술이 있고 끊임없이 변하기 때문에 후보자를 위해 선택할 수있는 미리 설정된 기술 목록이 너무 복잡 할 것이라고 말했다. – dlofrodloh

+0

그렇다고해서 데이터베이스를 표준화 할 수 없다는 의미는 아닙니다 ... 상호 참조는 수동으로 유지할 필요는 없지만 새 CV를 시스템에 입력하면 새로운 기술을 추가하도록 수정할 수 있습니다 –

답변

1

레코드 수가 1,000 개가 넘는 경우 속도 문제가 발생하지 않을 것입니다. 더 자주 쿼리하지 않는지 확인하십시오.

'mysql'태그로이 질문에 태그를 지정 했으므로 사용중인 데이터베이스라고 가정합니다. 검색 속도를 높이려면 FULLTEXT index을 추가해야합니다. 그러나이 유형의 인덱스는 MySQL 5.6부터 INNODB 테이블에서만 사용할 수 있습니다.

내장 검색을 먼저 시도해보십시오. 검색 속도가 너무 느리거나 정확하지 않을 경우 외부 전체 텍스트 검색 엔진을 볼 수 있습니다. 저는 개인적으로 Sphinx search server으로 아주 좋은 경험을했습니다. 수백만 개의 텍스트 레코드를 쉽게 인덱싱하고 좋은 결과를 반환했습니다.

1

전체 텍스트 인덱스를 사용하지 않는 한 쿼리에 전체 테이블 스캔이 필요합니다. SkillsCandidateSkills 두 개의 테이블을 추가하여 데이터베이스의 데이터 구조를 변경하는 것이 좋습니다. 각 사람이 가지고있는 능력을 말할 것

SkillId SkillName 
     1 javascript 
     2 php 
     3 nodejs 

두 번째 :

은 첫 번째와 같은 행을 포함, 가능한 기술의 목록이 될 것

CandidateId SkillId 
    1   1 
    2   1 
    2   2 

이것은 검색 속도를합니다, 그러나 이것이 주된 이유는 아닙니다. 주된 이유는 다음과 같은 문제를 해결하고 기능을 활성화하는 것입니다.

  • 검색 목록에서 맞춤법 오류를 방지합니다.
  • 동의어 검색을 사용하기위한 기초를 제공합니다.
  • Skills 테이블에 추가해야하기 때문에 새로운 기술을 추가 할 생각을하십시오.
  • 데이터베이스의 크기 조정 허용.

전체 텍스트 색인을 사용하여 원하는 것을하려고하면 몇 가지 사항을 배우게됩니다. 예를 들어, 기본 최소 단어 길이는 4이며, 기술에 "C"또는 "C++"가 포함 된 경우 문제가됩니다. MySQL은 동의어를 지원하지 않으므로이 기능을 사용하려면 동의어를 사용해야합니다. 그리고 여러 단어의 기술을 가지고 있다면 예기치 않은 결과가 발생할 수 있습니다.

관련 문제