위의 예제는 데이터베이스 테이블을 정의할 때 인덱스를 만들었습니다. 이미 테이블이 정의되어 있고 검색 쿼리가 매우 느리다고 가정합니다. 결과를 반환하는 데 시간이 너무 오래 걸릴 수 있습니다. 문제를 조사한 후 WHERE 절에서 가장 일반적으로 사용되는 열에 INDEX를 만들어 시스템 성능을 크게 향상시킬 수 있습니다. MySQL 인덱스는 테이블의 열에서 데이터를 가져 와서 인덱스라는 별도의 위치에 사전순으로 저장하여이 문제를 해결합니다. 이에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 쿼리 최적화 프로그램은 인덱스를 사용하여 지정된 쿼리에 대한 테이블의 모든 행을 검색할 필요 없이 데이터를 빠르게 찾을 수 있습니다. 명심해야 할 주요 개념은 인덱싱을 통해 쿼리 속도를 높이고 고유 및/또는 기본 키와 함께 사용할 때 일관성을 추가하는 데 도움이 됩니다. SELECT에 사용할 가능성이 가장 높은 열은 인덱싱에 이상적인 후보입니다. 또한 간단히 설명했듯이 EXPLAIN은 쿼리가 검색에서 인덱싱을 제대로 사용하고 있는지 여부에 대한 유용한 힌트와 통찰력을 제공할 수 있습니다. 데이터베이스 인덱스는 테이블의 작업 속도를 향상시키는 데이터 구조입니다. 인덱스는 하나 이상의 열을 사용하여 만들 수 있으며, 빠른 임의 조회와 레코드에 대한 액세스의 효율적인 순서를 모두 위한 기초를 제공합니다.
색인이 부족한 책에서 특정 장(예: 10)을 찾으려고 한다고 상상해 보십시오. 이 장을 찾을 수있는 유일한 방법은 찾을 때까지 전체 책을 스캔하는 것입니다. 책에 색인이 있고 1023페이지에서 10장이 시작한다고 말한 경우 다른 모든 페이지를 즉시 건너뛰고 해당 장의 위치로 바로 갈 수 있습니다. 이제 인덱싱의 컴퓨팅 성능을 보여주기 위해 indexed_samples 테이블을 사용하여 동일한 쿼리를 실행해 보겠습니다: 쿼리를 다시 작성하면 인덱스를 사용할 수 있습니다. 하지만 원하는 이름 지정 패턴을 사용하여 고유한 인덱스를 만들 수 있습니다. 그러나 나는 이름을 의미있게 만드는 것이 좋습니다. 나중에 데이터베이스에 많은 수의 인덱스가 있을 때 이 점을 이해할 수 있습니다. 새 테이블 “members_indexed”에서 색인에 “full_name” 열을 추가합니다. 특수 인덱스 수정자를 사용하면 FULL TEXT가 전체 열을 인덱싱하고 접두사가 지정되면 무시됩니다. 그러나 앞서 언급했듯이이 기사에서는 해당 유형의 인덱스를 다루지 않습니다. 이 두 쿼리 모두 student_id라는 “외래 키”를 사용합니다.
거의 항상 외부 키를 인덱싱하는 것이 좋으며 텍스트 필드와 동일한 방식으로 수행됩니다.