1
테이블의 데이터가 성순으로 정렬되어 있는 것을 볼 수 있는데 이는 성, 성, 도시에 다중 열 인덱스가 있고 userid에 대한 기본 키(인덱스)가 나중에 추가되므로 userid가 정렬되지 않기 때문입니다. . "select userid, lastname from user" 문의 쿼리 결과가 기본적으로 userid별로 정렬되도록 MySQL에서 인덱스를 재생성(또는 구성)하는 방법이 있나요?
참고: 인덱스를 강제로 사용하는 대신 사용자 강제 인덱스(기본)에서 사용자 ID, 성을 선택하고 인덱스를 재생성하거나 구성합니다(재구성).
4월 29일 업데이트
실은 테이블의 기존 인덱스를 재구성할 수 있는 명령어가 mysql에 있는지 묻고 싶습니다. 즉, 테이블을 일정 기간 업데이트하고 삭제하고 삽입한 후에는 데이터가 변경됩니다. 구조는 변경되지 않음)), 테이블의 인덱스는 그에 따라 다양한 변경(예: 기본 조각화 등)을 겪게 됩니다. 따라서 이러한 인덱스를 재구성하거나 재생성할 수 있는 방법이 있습니까? 그렇지 않으면 인덱스를 삭제하고 다시 작성하는 방법만 가능합니까?
5월 2일에 업데이트됨원래 질문에 취소선을 추가했습니다. 초기 질문에 몇 가지 문제가 있었습니다. 특히 여기에 설명이 잘못되었습니다.
mysql에는 테이블 최적화 기능이 있지만 동시에 테이블을 재구성하는 기능도 있습니다.
시스템에 확실한 비즈니스 피크 기간이 있는 경우 인덱스를 삭제하고 다시 빌드하는 것도 가능합니다.
이런 상황은 기본 키 이외의 다른 열이 복합 인덱스이기 때문에 쿼리하면 mysql이 직접 인덱스 테이블로 이동하여 모든 데이터를 찾습니다. (mysql innodb 일반 인덱스는 기본 키 정보를 함께 저장합니다.) 이므로 인덱스의 첫 번째 필드에 따라 정렬되어 검색됩니다. 디스크에 입력된 순서대로 전체 테이블을 읽는 것이 아니라 기본 키가 디스크에 입력된 순서대로 추가되므로 순차적입니다. 디스크에 있지만 읽어보면 인덱스 테이블이 불연속적입니다
이 상황을 바꾸고 싶다면 테이블을 다시 빌드해도 마찬가지입니다. 성
순서대로 입력합니다. 중복 필드의 경우 전체 테이블을 선택할 때 포함 인덱스 쿼리를 사용하지 않고 전체 테이블 스캔을 사용합니다. 물론 기본 키를 사용합니다. 순차적으로 배열됩니다.
mysql도 인덱스 상황에 따라 자동으로 인덱스를 다시 작성하지만 특별히 발견된 것은 없었던 것으로 기억합니다.
답변하실 분에게 맡겨주세요