문제

데이터베이스에 거의 고유한 필드가 있습니다.값은 98%의 경우 고유하지만 중복된 값이 몇 개 있을 수 있습니다.나는 이 분야에 대해 많은 검색을 하지 않을 것입니다.한 달에 두 번 말해요.테이블에는 현재 최대 5000개의 레코드가 있으며 매월 약 150개가 추가됩니다.

이 필드에 색인이 있어야 합니까?

나는 MySQL을 사용하고 있습니다.

도움이 되었습니까?

해결책

내 생각에 '거의 독특한 것'은 아마도 붉은 청어일 것이다.데이터는 고유하거나 그렇지 않지만 성능상의 이유로 인덱싱할지 여부는 결정되지 않습니다.

답변:

5000개의 레코드는 실제로 전혀 많지 않으며 색인이 있는지 여부에 관계없이 검색 속도는 여전히 빠릅니다.이러한 삽입 속도에서는 10,000개의 레코드에 도달하는 데 3년이 걸리며, 이는 여전히 많지 않습니다.
저는 개인적으로 색인을 추가하는 데 신경을 쓰지 않겠지만 그렇게 해도 문제가 되지 않습니다.

설명:

인덱스 추가를 결정할 때 고려해야 할 것은 삽입 속도와 선택 속도 사이의 균형입니다.

색인 없이 다음을 수행합니다. select 해당 필드에 대해서는 MySQL이 모든 단일 행을 탐색하고 모든 단일 필드를 읽어야 함을 의미합니다.색인을 추가하면 이를 방지할 수 있습니다.

인덱스의 단점은 데이터가 삽입될 때마다 DB가 데이터를 추가하는 것 외에도 인덱스를 업데이트해야 한다는 것입니다.이는 일반적으로 작은 오버헤드이지만 인덱스가 많고 쓰기 작업을 많이 수행하는 경우 실제로 알 수 있습니다.

데이터베이스에서 이렇게 많은 행을 얻을 때쯤이면 선택하는 데 하루 종일 걸리기 때문에 어쨌든 인덱스가 필요할 것입니다. 그러나 필드에 인덱스를 추가하지 않도록 주의해야 할 사항입니다. 필요할 경우를 대비해"

다른 팁

그것은 전혀 기록이 많지 않습니다. 나는 그 테이블에서 색인을 만드는 것을 귀찮게하지 않을 것입니다. 필드의 상대적 독창성은 관련이 없습니다. 심지어 수년간의 상품 하드웨어에서도 해당 테이블의 쿼리가 1 초 정도 걸릴 것으로 기대합니다.

일반적인 경험 법칙을 사용할 수 있습니다. 문제가 될 때 최적화하십시오. 색인이 필요하다는 것을 알 때까지 색인을 사용하지 마십시오.

당신이 말한 바에 따르면, 그것은 색인이 필요한 것처럼 들리지 않습니다. 경험의 규칙은 검색 속도를 높이기 위해 많은 선택을 선택하는 인덱스 필드이며, 그 결과 삽입물과 업데이트가 느려집니다.

당신만큼 작은 레코드 세트에서, 나는 당신이 현실 세계의 많은 부분이 어느 쪽이든 타격을 보지 않을 것이라고 생각합니다.

한 달에 두 번만 검색을 할 것이고 그 몇 줄이 있다면 나는 그것을 색인하지 않는다고 말할 것입니다. 쓸모없는 모든 것.

아닙니다. 기록이 많지 않으며 자주 쿼리되지 않을 것입니다. 색인이 필요하지 않습니다.

정말 판단 전화입니다. 이러한 작은 테이블을 사용하면 색인없이 합리적으로 신속하게 검색 할 수 있으므로이 없이도 얻을 수 있습니다.

반면에, 실제로 필요로하지 않는 색인을 만드는 데 드는 비용은 상당히 낮으므로 그렇게하지 않음으로써 자신을 많이 절약하지 않습니다.

또한 인덱스를 만들면 갑자기 1000 개의 새로운 레코드를 받기 시작하면 미래에 적용됩니다. 아마도 당신은 결코 일어나지 않을 것이라고 확신 할 수있는 상황에 대해 충분히 알고 있지만, 요구 사항은 예상치 못한 경우 변경할 수있는 방법이 있습니다.

편집 : 요구 사항이 변경되는 한, 고려해야 할 사항은 다음과 같습니다. DB가 커지고 나중에 색인이 필요하다는 것을 알게되면 간단히 인덱스를 만들고 완료 할 수 있습니까? 아니면 새 인덱스를 사용하기 위해 많은 코드를 변경해야합니까?

때에 따라 다르지. 다른 사람들이 응답했듯이, 테이블 업데이트 속도와 선택 속도 사이에는 트레이드 오프가 있습니다. 테이블 업데이트에는 테이블에 인서트, 업데이트 및 삭제가 포함됩니다.

당신이 다루지 않은 한 가지 질문입니다. 테이블에는 기본 키와 해당 색인이 있습니까? 인덱스가없는 테이블은 일반적으로 하나 이상의 인덱스를 갖는 양식에 혜택을줍니다. 이 색인을 얻는 가장 일반적인 방법은 기본 키를 선언하고 DBMS에 의존하여 그에 따라 인덱스를 생성하는 것입니다.

테이블에 기본 키 후보가없는 경우 일반적으로 테이블 디자인의 심각한 결함이 있음을 나타냅니다. 그것은 별도의 문제이며 스피어 레이트 토론을 받아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top