2012-04-19 2 views
1

인덱스 크기를 최소화하면서 MySQL에서 수백만 개의 전자 메일 주소를 인덱싱하는 가장 좋은 방법은 무엇입니까?MySQL에서 전자 메일 주소를 가장 효율적으로 인덱싱하는 방법은 무엇입니까?

이메일은 테이블에 있는지 빠르게 확인하기 위해 색인이 필요합니다. 중복이 허용됩니다.

다시 목표는 색인의 크기를 최소화하는 것입니다. 현재 varchar 필드에서 표준 색인을 사용하지만 이진 해시를 만들고 처음 몇 문자를 색인하는 것을 고려합니다. 다른 옵션은 없습니까?

+3

이메일 입력란에 고유 한 제약 조건이 있습니다. 삽입에 실패하면 이메일이 존재합니다. –

+1

@ N.B .: 답변입니다 :) –

답변

2

중복 입력을 원하지 않으면 이메일에 Unique Index을 사용하십시오.
중복 된 항목이 있으면 새 행이 삽입되지 않고 오류가 발생합니다.

+0

죄송합니다. 중복이 허용되어야 함을 분명히해야합니다. 색인 표 크기를 최소화하는 것이 주 목표입니다. –

+0

@Justanotherhacker 만약 당신이 중복 된 이메일을 허용한다면 당신은 그것에 대해 중복 가치를 확인함으로써 무엇을 성취 할 것인가에 대해 나는 명확하지 않다. –

+0

주소가 이미 저장되었는지 알면 가치가 있습니다. –

0

다릅니다. 둘 다 시도하고 테스트하십시오. 이 방정식에는 읽기 속도 이상의 속도가 있다는 것을 명심하십시오. 이 테이블이 많이 업데이트되고 삽입되면 삽입에 미치는 영향을 확인해야합니다.

해시 인덱스가 해시를 계산 한 다음 트리에 저장해야하는 반면 일반 b- 트리 인덱스는 트리에 값을 저장할 것으로 의심됩니다. 이는 해시 인덱스가 공간을 적게 사용하지만 인덱스를 업데이트하거나 새 값을 삽입하는 데 더 많은 작업을 수행 할 수 있음을 의미합니다.)

1 식으로 뭔가를 수반 값에 대한 해시 키를 만듭니다 수있는 해시 인덱스에 새 값을 삽입하는 내 마음에서

.

2) 색인에 해시를 삽입하십시오.

정상 B- 트리 인덱스에

1) 삽입 값이 될 것입니다 경우.

어쨌든 내 2 센트 가치.

관련 문제