인덱스는 쿼리 속도를 빠르게 높일 수 있기 때문에, 인덱스를 사용하지 않으면 MySQL은 첫 번째 레코드부터 시작한 다음 관련 행을 찾을 때까지 전체 테이블을 읽어야 합니다.
테이블이 클수록 시간이 더 많이 걸립니다. 항상 그런 것은 아닙니다.
추천 과정: MySQL 튜토리얼
인덱스는 데이터 구조입니다.
따라서 데이터베이스 시스템은 데이터 외에도 특정 검색 알고리즘을 만족하는 데이터 구조를 유지하며 이러한 데이터 구조는 일부에 있습니다. 이러한 데이터 구조에서 고급 검색 알고리즘을 구현할 수 있도록 데이터를 참조(지시)합니다. 이 데이터 구조는 인덱스입니다.
인덱스 데이터 구조 분석
이 인덱스의 구조는 무엇인가요? 즉, 이 구조가 검색 속도를 향상시킬 수 있는 이유는 무엇입니까?
1. 색인이 없으면 특정 기록을 검색할 때(예: 이름='소원'으로 검색) 소원이 하나만 있다는 보장이 없기 때문에 모든 기록을 검색해야 합니다.
2. name에 대한 인덱스를 생성하면 mysql은 전체 테이블에 대해 검색을 수행하고 각 레코드의 이름 값을 오름차순으로 정렬한 다음 인덱스 항목(name 및 row_id)을 작성합니다. 인덱스 세그먼트에 저장합니다. 쿼리 이름이 원하는 경우 해당 위치를 직접 찾을 수 있습니다.
3. 인덱스를 생성한다고 해서 반드시 MySQL이 테이블의 정보를 계산하고 사용 여부를 결정하는 것은 아닙니다. 테이블에 데이터가 매우 적은 경우에는 전체 테이블 스캔 속도가 이미 매우 빠르므로 인덱스를 사용할 필요가 없습니다.
인덱스의 작동 메커니즘을 설명하는 예
테이블 A에는 두 개의 필드가 있습니다
id,name
이제 테이블에는 천만 개의 데이터가 있습니다.
요구 사항: 이름을 기반으로 해당 ID를 쿼리합니다.
인덱스가 없으면 테이블의 모든 레코드를 쿼리해야 하고, 천만 개의 데이터를 모두 하나씩 확인해야 합니다. 얼마나 느린가요?
이제 이름을 기반으로 인덱스를 만듭니다.
인덱스 테이블 구조:
id,name,value
여기서 값은 json 배열에 저장된 테이블 A의 ID입니다(같은 이름을 가진 상황이 여러 개 있기 때문입니다). 이름을 정렬하는 규칙에 따라 인덱스 테이블에서 이름의 위치를 직접 찾을 수 있으며 테이블 A에서 id를 가진 레코드를 검색할 수 있습니다.
간단히 말하면, 인덱스를 생성하면 테이블 A의 레코드에 직접 접근할 수 있습니다.
물론 속도는 빠릅니다. 테이블 A를 쿼리하려면 1천만 개의 데이터를 쿼리해야 합니다. 인덱스를 설정하면 알고리즘이 쿼리 양을 크게 줄입니다.
위 내용은 mysql에 인덱싱이 필요한 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!