이 글은 주로 mysql 인덱싱의 원리를 소개하고 있습니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다! (관련 추천: "mysql tutorial")
인덱스의 목적
인덱스의 목적은 쿼리 효율성을 높이는 것인데, 이는 사전과 비교할 수 있습니다. "mysql"이라는 단어를 사용하려면 m개의 문자를 찾은 다음 아래에서 아래로 y 문자를 찾은 다음 나머지 sql을 찾아야 합니다. 색인이 없으면 원하는 것을 찾기 위해 모든 단어를 살펴봐야 할 수도 있습니다. m으로 시작하는 단어를 찾으려면 어떻게 해야 합니까? 아니면 ze로 시작하는 단어는 어떻습니까? 색인이 없으면 이 문제가 전혀 완료될 수 없다고 생각하시나요?
MySQL 인덱스 원리
사전 외에도 기차역의 기차 시간표, 도서 카탈로그 등 인덱스의 예는 생활 곳곳에서 볼 수 있습니다. 획득하려는 데이터의 범위를 지속적으로 좁힘으로써 원하는 최종 결과를 필터링할 수 있으며 동시에 무작위 이벤트를 순차적 이벤트로 전환할 수 있습니다. 즉, 항상 동일한 검색을 사용합니다. 데이터를 잠그는 방법.
데이터베이스도 마찬가지지만, 동등한 쿼리뿐만 아니라 범위 쿼리(>, <, between, in), 퍼지 쿼리(like), 통합 쿼리도 처리하기 때문에 분명히 훨씬 더 복잡합니다. (또는) 등. 데이터베이스는 모든 문제를 처리하기 위해 어떻게 선택해야 합니까?
사전의 예를 다시 생각해 보겠습니다. 데이터를 세그먼트로 나눈 다음 세그먼트로 쿼리할 수 있나요? 가장 간단한 방법은 1,000개의 데이터가 있을 경우 1~100을 첫 번째 섹션으로 나누고, 101~200을 두 번째 섹션으로 나누고, 201~300을 세 번째 섹션으로 나누는 것인데… 250번째 데이터에서는 세 번째 섹션만 찾으면 유효하지 않은 데이터의 90%가 제거됩니다.
그런데 천만의 기록이라면 몇 부분으로 나누어야 할까요? 약간의 알고리즘 기초가 있는 학생들은 평균 복잡도가 lgN이고 쿼리 성능이 좋은 검색 트리를 생각할 것입니다. 그러나 여기서 우리는 핵심 문제를 간과했습니다. 복잡성 모델은 매번 동일한 운영 비용을 기반으로 하며, 데이터베이스 구현이 상대적으로 복잡하고, 성능을 향상시키기 위해 데이터의 일부가 디스크에 저장될 수 있습니다. 디스크 액세스 비용이 메모리 액세스 비용의 약 100,000배이므로 간단한 검색 트리는 복잡한 애플리케이션 시나리오를 충족할 수 없기 때문에 매번 메모리를 사용하여 계산합니다.
위 내용은 mysql 인덱스의 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!