MySQL에서 INDEX와 KEY를 사용하는 것의 차이점은 무엇입니까?


192

다음 코드와 같이 INDEX를 사용하는 방법을 알고 있습니다. 그리고 외래 키기본 키 를 사용하는 방법을 알고 있습니다 .

CREATE TABLE tasks ( 
  task_id INT UNSIGNED NOT NULL AUTO_INCREMENT, 
  parent_id INT UNSIGNED NOT NULL DEFAULT 0, 
  task VARCHAR(100) NOT NULL, 
  date_added TIMESTAMP NOT NULL, 
  date_completed TIMESTAMP, 
  PRIMARY KEY (task_id), 
  INDEX parent (parent_id), 
  ....


그러나 다음과 같이 INDEX 대신 KEY를 사용하는 코드를 찾았습니다.

...
KEY order_date (order_date) 
...


공식 MySQL 페이지에서 설명을 찾을 수 없습니다. KEY와 INDEX의 차이점이 무엇인지 말해 줄 수 있습니까?

내가 볼 수있는 유일한 차이점은을 사용할 때 KEY ...단어를 반복해야한다는 것
KEY order_date (order_date)입니다.

답변:


264

차이가 없습니다. 그것들은 동의어입니다.

에서 수동 입력 :CREATE TABLE

KEY일반적으로의 동의어입니다 INDEX. 키 속성 PRIMARY KEYKEY열 정의에 지정된 경우와 같이 지정할 수도 있습니다 . 이것은 다른 데이터베이스 시스템과의 호환성을 위해 구현되었습니다.


1
최신 버전의 SQLYog에서 테이블 정보를 볼 때로 KEY keyname (column_name)테이블을 만들 때 표시 됩니다 INDEX keyname (column_name). 그것이 동의어라는 사실은 그것을 완벽하게 설명합니다.
crmpicco

14

"차이"에 대한 좋은 설명 은 다음과 같습니다 .

"MySQL에는 모든 키도 색인화해야합니다. 이는 성능 향상을 위해 MySQL에 특정한 구현 세부 사항입니다."


2
질문은 MySQL에서 SQL 식별자 KEY 및 INDEX 사용에 관한 것입니다. 키와 인덱스의 차이점이 아닙니다.
Josh J

검색 엔진과의 차이점을 검색했으며 이것이 첫 번째 결과였습니다. 제 생각에는 추가 질문을 열 필요가 없습니다. 그러나 원하는 경우 자유롭게 할 수 있습니다.
Stefan


4

키는 테이블 내에서 매우 특정한 역할을 수행하는 특수 필드이며 키 유형에 따라 테이블 내에서 용도가 결정됩니다.

인덱스는 RDBMS (데이터베이스 관리 시스템)가 데이터 처리를 개선하기 위해 제공하는 구조입니다. 인덱스는 논리적 데이터베이스 구조와 관련이 없습니다.

그래서...

키는 테이블 내에서 레코드를 식별하는 데 사용하는 논리적 구조이고 인덱스는 데이터 처리를 최적화하는 데 사용하는 물리적 구조입니다.

출처 : 단순한 필사자를위한 데이터베이스 디자인

저자 : Michael Hernandez


1
질문은 MySQL에서 SQL 식별자 KEY 및 INDEX 사용에 관한 것입니다. 키와 인덱스의 차이점이 아닙니다.
Josh J

-1

키는 인덱스를 작성하는 일련의 열 또는 표현식입니다.

  1. 인덱스는 데이터베이스에 저장된 구조이지만 키는 논리적 개념입니다.

  2. 색인은 레코드에 빠르게 액세스하는 데 도움이되는 반면 키는 레코드를 고유하게 식별합니다.

  3. 모든 테이블에는 반드시 키가 있지만 인덱스가 반드시 필요한 것은 아닙니다.

https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721을 확인 하십시오.


3
질문은 MySQL에서 SQL 식별자 KEY 및 INDEX 사용에 관한 것입니다. 키와 인덱스의 차이점이 아닙니다.
Josh J

1
@Josh J 원래 동기 부여가 식별자에 대해 묻는 것이었지만 검색 엔진을 사용하여 키와 인덱스의 차이점을 검색하면이 주제가 나타납니다. 질문의 제목을 좀 더 구체적으로 개선하는 것이 합리적 일 수 있습니다. 반면에, mysql에서 키와 인덱스의 차이점에 대한 질문을 쓰는 것은 중복으로 표시 될 수 있습니다. => 나는 그러한 보완 답변이 매우 유용하다는 것을 알았습니다. 어쨌든 "실제"답변이 가장 높은 점수를받습니다. 따라서 보완 답변에 대해 부정적인 투표를 할 이유가 없습니다.
Stefan

나는 이것을 명확하게하기 위해 INDEX와 KEY를 대문자로 사용했습니다.
reinierpost
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.