mysql index - mysql 테이블의 인덱스를 재구성(또는 생성)하는 방법은 무엇입니까?
淡淡烟草味
淡淡烟草味 2017-05-18 10:52:38
0
3
989

1 테이블의 데이터가 성순으로 정렬되어 있는 것을 볼 수 있는데 이는 성, 성, 도시에 다중 열 인덱스가 있고 userid에 대한 기본 키(인덱스)가 나중에 추가되므로 userid가 정렬되지 않기 때문입니다. .
"select userid, lastname from user" 문의 쿼리 결과가 기본적으로 userid별로 정렬되도록 MySQL에서 인덱스를 재생성(또는 구성)하는 방법이 있나요?
참고: 인덱스를 강제로 사용하는 대신 사용자 강제 인덱스(기본)에서 사용자 ID, 성을 선택하고 인덱스를 재생성하거나 구성합니다(재구성).

4월 29일 업데이트
실은 테이블의 기존 인덱스를 재구성할 수 있는 명령어가 mysql에 있는지 묻고 싶습니다. 즉, 테이블을 일정 기간 업데이트하고 삭제하고 삽입한 후에는 데이터가 변경됩니다. 구조는 변경되지 않음)), 테이블의 인덱스는 그에 따라 다양한 변경(예: 기본 조각화 등)을 겪게 됩니다. 따라서 이러한 인덱스를 재구성하거나 재생성할 수 있는 방법이 있습니까? 그렇지 않으면 인덱스를 삭제하고 다시 작성하는 방법만 가능합니까?
5월 2일에 업데이트됨원래 질문에 취소선을 추가했습니다. 초기 질문에 몇 가지 문제가 있었습니다. 특히 여기에 설명이 잘못되었습니다.

"테이블의 데이터가 성을 기준으로 정렬되어 있는 것을 볼 수 있습니다. 이는 성, 가족 이름, 도시에 대한 다중 열 인덱스가 있고 나중에 userid에 대한 기본 키(인덱스)가 추가되므로 테이블의 데이터가 성별로 정렬되어 있음을 알 수 있습니다. lastname 에는 familyname, city 에 다중 열 색인이 있고 userid 에 대한 기본 키(색인)가 나중에 추가되므로 userid 순서가 지정되지 않았기 때문입니다." 순서가 지정되지 않은 이유에 대해서는 @clcx_1315님이 이미 답변해 주셨고, 그는 또한 인덱스를 재구성(생성)하더라도 이 문장에서 userid, lastname을 user에서 선택하면 userid의 순서를 얻을 수 없다는 점을 지적했습니다. 바이두를 검색해 보니 MySQL에서는 인덱스를 재생성하거나 정리하는데 특별히 사용하는 명령어는 없는 것 같은데, SQL Server 데이터베이스에는 명령어가 있는 것 같습니다.

淡淡烟草味
淡淡烟草味

모든 응답(3)
阿神

mysql에는 테이블 최적화 기능이 있지만 동시에 테이블을 재구성하는 기능도 있습니다.
시스템에 확실한 비즈니스 피크 기간이 있는 경우 인덱스를 삭제하고 다시 빌드하는 것도 가능합니다.

刘奇

이런 상황은 기본 키 이외의 다른 열이 복합 인덱스이기 때문에 쿼리하면 mysql이 직접 인덱스 테이블로 이동하여 모든 데이터를 찾습니다. (mysql innodb 일반 인덱스는 기본 키 정보를 함께 저장합니다.) 이므로 인덱스의 첫 번째 필드에 따라 정렬되어 검색됩니다. 디스크에 입력된 순서대로 전체 테이블을 읽는 것이 아니라 기본 키가 디스크에 입력된 순서대로 추가되므로 순차적입니다. 디스크에 있지만 읽어보면 인덱스 테이블이 불연속적입니다
이 상황을 바꾸고 싶다면 테이블을 다시 빌드해도 마찬가지입니다. 성
순서대로 입력합니다. 중복 필드의 경우 전체 테이블을 선택할 때 포함 인덱스 쿼리를 사용하지 않고 전체 테이블 스캔을 사용합니다. 물론 기본 키를 사용합니다. 순차적으로 배열됩니다.

伊谢尔伦

mysql도 인덱스 상황에 따라 자동으로 인덱스를 다시 작성하지만 특별히 발견된 것은 없었던 것으로 기억합니다.
답변하실 분에게 맡겨주세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿