2016-11-01 2 views
0

아주 기본적인 데이터베이스 설계 질문 :MySQL의 이노 디비 색인 혼란

나는 다음과 같은 열이있는 매우 큰 테이블을 만드는거야 : EMPLOYEE_NAME (VARCHAR), employee_id입니다 (INT), Employee_Birthday (INT).

내 쿼리 중 많은 수가이 열의 값을 기반으로 SELECT 및 WHERE 절을 사용하므로 Employee_ID에 대해 단일 열 b- 트리 인덱스를 만들려고합니다.

일단 생성 된 Employee_ID는 업데이트하지 않지만 자주 새 직원을이 테이블에 삽입합니다.

인덱싱 된 열이있는 행을 추가하면 인덱싱하지 않는 것에 비해 추가 비용이 발생합니까? 또는 추가 비용은 기존 행을 업데이트 할 때만 적용됩니까?

+0

데이터베이스 설계 질문은 dba.stackexchange.com에 더 적합합니다. – Barmar

답변

1

인덱스 작성을 평가할 때 중요한 질문은 다음과 같습니다.이 테이블은 쿼리 또는 INSERTIONS에 대해 대부분 액세스 할 수 있습니까? 또한 매우 큰 테이블의 의미를 지정해야합니다 (직원에 대해 이야기하고 있으므로 테이블이 호스트하는 것으로 추측합니다. 아마도 100K 개 미만의 레코드 일 수 있습니다.). 예를 들어 각 SELECT에 대해 수천 개의 INSERT가있을 것으로 예상된다면 인덱스없이 시도해보십시오. 반면에 주로 테이블을 쿼리하는 경우 열의 인덱스를 설정하면 Employee_ID 가야합니다.

2

SELECTs, UPDATEsDELETEs을 기준으로 인덱스를 만듭니다. 많이 걱정하지 마십시오 INSERTs; 하나의 INSERT에 대한 오버 헤드는 다른 작업의 속도보다 훨씬 적습니다.

InnoDB를 사용하면 언제나 PRIMARY KEY이 있으므로 유용 할 수 있습니다.

관련 문제