Programing

기본 키는 MySQL에서 자동으로 색인됩니까?

lottogame 2020. 4. 13. 08:07
반응형

기본 키는 MySQL에서 자동으로 색인됩니까?


명시 적으로 인덱스를 작성해야합니까, 기본 키를 정의 할 때 암시 적입니까? 답변은 MyISAM과 InnoDB에 대해 동일합니까?


기본 키는 항상 색인화됩니다. 이는 MyISAM 및 InnoDB와 동일하며 일반적으로 인덱스를 지원하는 모든 스토리지 엔진에 적용됩니다.


http://dev.mysql.com/doc/refman/5.0/en/constraint-primary-key.html 에 따르면 이것이 암시 적 인 것처럼 보입니다.


2009 년에 이것이 요청되었지만 기본 키에 대한 MySQL 설명서에 대한 실제 참조를 게시 할 것이라고 생각했습니다. http://dev.mysql.com/doc/refman/5.5/en/optimizing-primary-keys.html

테이블 기본 키 는 가장 중요한 쿼리에 사용하는 열 또는 열 집합을 나타냅니다. 빠른 쿼리 성능을 위해 관련 인덱스가 있습니다.

MySQL 5.0 참조는 http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html을 참조하십시오.

대부분의 MySQL 인덱스 ( PRIMARY KEY , UNIQUE, INDEX 및 FULLTEXT)는 B- 트리에 저장됩니다. 공간 데이터 유형의 인덱스가 R- 트리를 사용하고 MEMORY 테이블도 해시 인덱스를 지원한다는 점은 예외입니다.


기본 키는 MyISAM과 InnoDB 모두에 대해 암시 적으로 색인됩니다. 기본 키를 사용하는 쿼리에서 EXPLAIN을 사용하여이를 확인할 수 있습니다.


기본 키에 대한 인덱스를 명시 적으로 만들 필요는 없습니다. 기본적으로 수행됩니다.


나는 이것이 답이라고 생각한다

mysql> create table test(id int primary key, s varchar(20));
Query OK, 0 rows affected (0.06 sec)

mysql> show indexes from test \G
*************************** 1. row ***************************
        Table: test
   Non_unique: 0
     Key_name: PRIMARY
 Seq_in_index: 1
  Column_name: id
    Collation: A
  Cardinality: 0
     Sub_part: NULL
       Packed: NULL
         Null:
   Index_type: BTREE
      Comment:
Index_comment:
1 row in set (0.00 sec)

인덱스는 where 절과 "order by"와 같은 모든 종류의 정렬에서 자주 사용되는 열에 가장 적합합니다. 좀 더 복잡한 데이터베이스에서 작업하고있을 수 있으므로 몇 가지 간단한 규칙을 기억하는 것이 좋습니다.

  • 인덱스는 삽입 및 업데이트 속도를 늦추므로 자주 업데이트되는 열에주의해서 사용해야합니다.
  • 색인은 절과 순서에 따라 속도를 높입니다. 테이블을 만들 때 데이터가 어떻게 사용되는지 생각해야합니다. 기억해야 할 것이 몇 가지 더 있습니다. 테이블이 매우 작은 경우 (예 : 직원 수가 적은 경우) 테이블을 그대로두고 테이블 스캔을 수행하는 것보다 인덱스를 사용하는 것이 더 나쁩니다.

  • 인덱스는 실제로 많은 행이있는 테이블에서만 유용합니다.

  • 직원 데이터베이스의 상황에서 단점으로 기억해야 할 또 다른 사항은 열이 가변 길이 인 경우 인덱스 (및 대부분의 MySQL)의 효율성이 훨씬 떨어진다는 것입니다.

  • 조인도 잊지 마십시오! 인덱스 조인 필드는 작업 속도를 높입니다.


기본 키는 항상 자동으로 인덱싱되고 고유합니다. 따라서 중복 인덱스를 만들지 않도록주의하십시오.

예를 들어, 이와 같은 테이블을 만든 경우

CREATE TABLE mytable (foo INT NOT NULL PRIMARY KEY, bar INT NOT NULL, baz INT NOT NULL,
  UNIQUE(foo), INDEX(foo)) ENGINE=InnoDB;

기본 키를 인덱싱하고 고유성 제약 조건을 적용하기 때문에 실제로 세 개의 인덱스를 생성하게됩니다 foo!

참고 URL : https://stackoverflow.com/questions/1071180/is-the-primary-key-automatically-indexed-in-mysql

반응형