복붙노트

[SQL] 언제 기본 키 또는 인덱스를 사용해야합니까?

SQL

언제 기본 키 또는 인덱스를 사용해야합니까?

언제는 기본 키 또는 인덱스를 사용해야합니까?

그들의 차이점은 무엇입니까 최고의 무엇입니까?

해결법

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

    1.기본적으로, 기본 키 인덱스의 특별한 종류 (구현 수준에서)입니다. 구체적으로 특별히:

    기본적으로, 기본 키 인덱스의 특별한 종류 (구현 수준에서)입니다. 구체적으로 특별히:

    테이블은 여러 인덱스를 가질 수 있으며 인덱스는 UNIQUE 필요는 없습니다. 인덱스는 두 가지 이유가 존재한다 :

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

    2.테이블은 하나의 기본 키,하지만 여러 인덱스를 가질 수 있습니다.

    테이블은 하나의 기본 키,하지만 여러 인덱스를 가질 수 있습니다.

    인덱스가 고유하지 않은 반면, 기본 키, 고유합니다. 따라서, 기본 키의 값은 테이블의 레코드를 식별, 인덱스의 값이 필요하지.

    기본 키는 보통 자동 색인 - 기본 키, 동일한 열 (들)에 대한 인덱스를 생성 할 필요를 생성합니다.

    각 테이블에는 기본 키가 있어야합니다. 각 레코드를 고유하게 식별하기 위해 보장되는 기본 키를 정의합니다.

    자주 조인 또는 조건, 인덱스가 쿼리의 속도가 빨라질 수 있습니다 곳에서 사용하는 다른 열이있는 경우. 생성하고 레코드를 삭제 그러나 인덱스는 오버 헤드가 - 당신은 삽입과 삭제 엄청난 양의 할 경우 유의해야 할 무언가를.

    없음 정말 - 각각의 하나는 그 목적이 없습니다. 그리고 그것은 당신이 정말로 하나 또는 다른를 선택할 수 없습니다.

    난 항상 테이블의 기본 키가 먼저 무엇을 스스로에게 물어 그것을 정의하는 것이 좋습니다.

    개인 경험에 의해 인덱스를 추가하거나 성능이 감소하는 경우. 차이를 측정, 당신은 SQL Server와 함께 작업하는 경우 실행 계획을 읽는 방법을 배웁니다.

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

    3.기본 키와 고유 인덱스의 차이점이 힘 도움말 기본 사항으로 돌아 가기

    기본 키와 고유 인덱스의 차이점이 힘 도움말 기본 사항으로 돌아 가기

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

    4.기본 키는 정의에 의해 고유 : 각 개별 행을 식별합니다. 이 행을 식별 할 수있는 유일한 방법이기 때문에 당신은 항상 당신의 테이블에 기본 키를 원한다.

    기본 키는 정의에 의해 고유 : 각 개별 행을 식별합니다. 이 행을 식별 할 수있는 유일한 방법이기 때문에 당신은 항상 당신의 테이블에 기본 키를 원한다.

    인덱스는 기본적으로 필드의 필드 또는 세트에 대한 사전이다. 일부 필드는 일부 특정 값과 같은 곳에 기록을 찾기 위해 데이터베이스를 요청할 때 올바른 행을 찾을 사전 (색인)에서 볼 수있다. 다만 사전처럼 항목이 이진 검색을 허용 인덱스에 분류되어 있기 때문에, 매우 빠릅니다. 인덱스없이, 데이터베이스는 테이블의 각 행을 읽고 값을 확인한다.

    당신은 일반적으로 당신이 필터에 필요한 각각의 컬럼에 인덱스를 추가 할. 당신이 컬럼의 특정 조합에 검색하는 경우, 당신은 그 모든 열을 포함하는 단일 인덱스를 생성 할 수 있습니다. 이렇게하면 같은 인덱스는 인덱스의 열 목록의 접두사를 검색 할 수 있습니다. 간단히 말하면 데이터베이스가 특정 값으로 시작하고 여전히 효율적 이진 검색을 사용하여 항목을 볼 수 있도록 (약간 부정확 한 경우)의 사전 지정된 순서로, 컬럼에 사용 된 값의 연결 구성 항목을 보유하고 이.

    만약 컬럼 (A, B, C)에 대한 인덱스가있을 경우 해당 인덱스의 첫번째 열이 있기 때문에, 심지어 A의 필터 만하면 예를 들어,이 인덱스를 사용할 수있다. 마찬가지로, 당신이 A와 B를 모두 필터링하는 경우 사용할 수 있습니다 그들은 열 목록에 접두사하지 않기 때문에, B 또는 C에 만 필터 경우는, 그러나, 사용하실 수 없습니다 - 당신이 것을 수용하는 또 다른 지표가 필요 .

    당신이 당신의 기본 키와 같은 열을 convering 인덱스를 추가 할 필요가 없습니다 기본 키는 인덱스 역할을합니다.

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

    5.키와 인덱스는 다른 일을 달성하기 아주 다른 개념이다. 키는 고유해야 튜플을 필요로하는 논리적 제약 조건입니다. 인덱스는 데이터베이스의 성능 최적화 기능입니다 따라서 물리적이 아닌 데이터베이스의 논리적 기능입니다.

    키와 인덱스는 다른 일을 달성하기 아주 다른 개념이다. 키는 고유해야 튜플을 필요로하는 논리적 제약 조건입니다. 인덱스는 데이터베이스의 성능 최적화 기능입니다 따라서 물리적이 아닌 데이터베이스의 논리적 기능입니다.

    종종 유사하거나 동일한 구문 제약 조건과 인덱스를 지정하는 데 사용되기 때문에 둘 사이의 차이는 때때로 흐리게한다. 키 제약 조건을 만들 때 대부분의 DBMS는 기본적으로 인덱스를 생성합니다. 논리적 및 물리적 문제를 분리하는 것은 데이터 관리의 매우 중요한 부분이기 때문에 키와 인덱스 사이의 혼란 가능성은 불행한 일이다.

    감사합니다 "차"키로. 그들은 키의 "특별한"유형이 아니다. 기본 키는 테이블 그냥 하나 개의 후보 키이다. 이 대부분의 SQL DBMS의 후보 키를 생성하는 적어도 두 가지 방법이 있으며 그 중 하나가 기본 키 제약 조건을 사용하거나 NOT NULL 컬럼에 UNIQUE 제약 조건을 사용하고 있습니다. 그것은 모든 SQL 테이블가에 PRIMARY KEY 제약 조건을 가지고 매우 광범위하게 관찰 규칙입니다. 기본 키 제약 조건을 사용하여 기존의 지혜와 할 수있는 완벽하게 합리적인 일이 있지만, 대부분의 DBMS가 동일한 모든 키를 취급하기 때문에 일반적으로 실제적인 또는 논리적 차이가 없습니다. 물론 모든 테이블은 적어도 하나의 후보 키를 시행한다고하지만, 그 키 (들)하지 않습니다 일반적으로 문제가 PRIMARY KEY 또는 UNIQUE 제약 조건에 의해 시행 여부. 원칙적으로는 중요하지 "차"열쇠 후보 키이다.

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

    6.모든 테이블에 기본 키가 있어야합니다.

    모든 테이블에 기본 키가 있어야합니다.

    쿼리의 많은 종류는 INDEX의 현명한 선택에 의해 가속화된다. 그것은 가장 좋은 인덱스가 기본 키라고 할 수있다. 내 요점은 쿼리가 인덱스에 대한 PK 사용 여부의 주요 요인이라는 것이다.

  7. from https://stackoverflow.com/questions/2878272/when-should-i-use-primary-key-or-index by cc-by-sa and MIT license