찾다

 >  Q&A  >  본문

mysql index - mysql 테이블의 인덱스를 재구성(또는 생성)하는 방법은 무엇입니까?

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 데이터베이스에는 명령어가 있는 것 같습니다.

淡淡烟草味淡淡烟草味2789일 전1025

모든 응답(3)나는 대답할 것이다

  • 阿神

    阿神2017-05-18 10:54:38

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

    회신하다
    0
  • 怪我咯

    怪我咯2017-05-18 10:54:38

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-18 10:54:38

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

    회신하다
    0
  • 취소회신하다