복붙노트

[SQL] 클러스터 인덱스의 성능 향상은 기본 키를 GUID

SQL

클러스터 인덱스의 성능 향상은 기본 키를 GUID

나는 행 많은 수의 (10K +)와 테이블을했습니다 그리고 기본 키는 GUID입니다. 기본 키는 클러스터됩니다. 쿼리 성능이 테이블에 매우 낮다. 이 효율적으로 만드는 제안을 주시기 바랍니다.

해결법

  1. ==============================

    1.대신 여기 NEWID 그리고 NEWSEQUENTIALID 사이에 몇 가지 간단한 코드로 보여 차이를 참조) (NEWSEQUENTIALID를 사용할 필요가

    대신 여기 NEWID 그리고 NEWSEQUENTIALID 사이에 몇 가지 간단한 코드로 보여 차이를 참조) (NEWSEQUENTIALID를 사용할 필요가

  2. ==============================

    2.GUID에 클러스터 된 인덱스는 좋은 디자인이 아니다. GUID의 본질은, 임의 점입니다 클러스터 된 인덱스는 물리적으로 주문 키에 의해 레코드를하면서. 두 가지 가능성에서 완전히 있습니다. 모든 삽입을 위해 SQL은 디스크에 기록을 다시 정렬 할 수있다! 이 인덱스에서 클러스터링 제거!

    GUID에 클러스터 된 인덱스는 좋은 디자인이 아니다. GUID의 본질은, 임의 점입니다 클러스터 된 인덱스는 물리적으로 주문 키에 의해 레코드를하면서. 두 가지 가능성에서 완전히 있습니다. 모든 삽입을 위해 SQL은 디스크에 기록을 다시 정렬 할 수있다! 이 인덱스에서 클러스터링 제거!

    당신이 데이터에 "자연"순서가있을 때 사용하는 클러스터링에 시간이 : 시간 필드의 등을 삽입 시간, 계좌 번호, 클러스터링은 거의 무료입니다. (계좌 번호가 순차적으로 할당하는 경우) 계좌 번호의 경우, 무료 또는 저렴 수 있습니다.

    GUID를 문제의 주위에 기술적 인 방법이 될 수 있지만, 가장 좋은 아이디어는 클러스터링을 사용할시기를 이해하는 것입니다.

  3. ==============================

    3.기본 키로 GUID를 사용하여 아무 문제가 없습니다. 그냥 당신이 실제로 설정할 때 GUID는 기본 키가 다음 자동 유형의 클러스터되지 않은 것으로 만들고 인덱스를 설정할 수 있는지 확인하십시오. 많은 사람들이 SQL 서버에서이 작업을 수행하는 (또는 청춘의 노하우를) 잊는다.

    기본 키로 GUID를 사용하여 아무 문제가 없습니다. 그냥 당신이 실제로 설정할 때 GUID는 기본 키가 다음 자동 유형의 클러스터되지 않은 것으로 만들고 인덱스를 설정할 수 있는지 확인하십시오. 많은 사람들이 SQL 서버에서이 작업을 수행하는 (또는 청춘의 노하우를) 잊는다.

    GUID를에 클러스터 된 인덱스를 사용하지 마십시오. 이것은 분명히 무의미 디스크에있는 GUID, 주변의 물리적 순서가 발생합니다 (다른 사람이 이미 지적대로)

  4. ==============================

    4.당신은 인덱스가 더 효과적인 것 순차적 GUID를 시도 할 수 있습니다. 여기에 정보.

    당신은 인덱스가 더 효과적인 것 순차적 GUID를 시도 할 수 있습니다. 여기에 정보.

  5. ==============================

    5.당신은 당신의 쿼리를 분석 할 필요가있다. 쿼리가 (당신이 SQL Server 또는 Oracle에서 쉽게 조용한를 얻을 수 있습니다) 실행 계획을 표시하지 않고 심하게 수행 왜 우리는 단지 추측 할 수있다.

    당신은 당신의 쿼리를 분석 할 필요가있다. 쿼리가 (당신이 SQL Server 또는 Oracle에서 쉽게 조용한를 얻을 수 있습니다) 실행 계획을 표시하지 않고 심하게 수행 왜 우리는 단지 추측 할 수있다.

    (원료 저장된 경우) GUID가 128 비트 값 인 것을 고려하여 GUID 컷 (기본 키 인덱스의 경우) (50)만큼 %까지 데이터와 인덱스 블록의 밀도는 확신 GUID가 적절하게.

    그러나 힘은 문제가되지 않을 것을, 그래서 쿼리 계획을 검토합니다. 그것은 여러 가지 다른 문제가있을 수 있습니다.

  6. ==============================

    6.lenghty 문자열 열에 대한 클러스터 된 인덱스를 생성하지 않도록하십시오. GUID는 36 문자있을 것이다. 심지어 당신이 클러스터 된 인덱스로 생성 한 쿼리 성능이 저하됩니다. ID 열 정수 더 연습 사용합니다.

    lenghty 문자열 열에 대한 클러스터 된 인덱스를 생성하지 않도록하십시오. GUID는 36 문자있을 것이다. 심지어 당신이 클러스터 된 인덱스로 생성 한 쿼리 성능이 저하됩니다. ID 열 정수 더 연습 사용합니다.

  7. from https://stackoverflow.com/questions/583001/improving-performance-of-cluster-index-guid-primary-key by cc-by-sa and MIT license