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