>  기사  >  데이터 베이스  >  mysql 최적화 (5) 인덱싱 및 정렬

mysql 최적화 (5) 인덱싱 및 정렬

黄舟
黄舟원래의
2016-12-29 16:10:211196검색

정렬 시 두 가지 상황이 발생할 수 있습니다.

1: 인덱스를 포함하는 경우 인덱스에서 직접 쿼리할 때 순서가 있거나
인덱스를 사용하거나 정렬 쿼리 시 인덱스 필드를 따라 있을 수 있습니다. 질문. 이때 정렬 비용이 저렴합니다

2: 먼저 데이터를 꺼내서 파일 정렬을 위한 임시 테이블을 구성합니다(파일 정렬이지만 파일이 디스크나 메모리에 있을 수 있음)



우리의 목표------검색된 데이터 자체가 순서대로!
인덱스를 사용하여 정렬합니다.



예: 상품 제품 테이블, (cat_id,shop_price) 공동 색인을 형성합니다.

cat_id=N shop_price별 주문, 색인을 사용하여 정렬할 수 있습니다.

shop_price별로 상품 주문에서 products_id,cat_id,shop_price를 선택합니다.

/ / where를 사용하여 shop_price 지수에 따라 꺼낸 결과가 자동으로 정렬됩니다.



click_count별로 상품 주문에서 products_id,cat_id,shop_price를 선택합니다.

// filesort를 사용하면 파일 정렬이 사용됩니다. 즉, 검색된 결과가 다시 정렬됩니다.

mysim이 실행되면 모두 찾아 정렬한 다음 다시 돌아가서 행을 검색합니다. 인덱스가 있는 한 실제로 인덱스는 크지 않습니다. 인덱스 클릭과 ID를 결합하여 인덱스를 구축할 수 있습니다.

innodb는 리프 바로 아래에 있습니다

중복 인덱스는 의미가 없습니다

중복 인덱스는 효율성을 향상시킵니다.

인덱스 조각화 및 유지 관리

대형 웹사이트에서는 데이터가 거의 삭제되지 않으므로 쉽게 재사용되지 않는 디스크 및 짧은 바이트는 쉽게 재사용되지 않습니다.

메모리 조각화

허점 수정

장기적인 데이터 변경 프로세스 동안 두 인덱스 모두 파일 및 데이터 파일은 구멍을 생성하고 조각화됩니다.

nop 작업(데이터에 상당한 영향을 미치는 작업 아님)
을 사용하여 테이블을 수정할 수 있습니다.

예: 테이블의 엔진은 innodb입니다.
는 테이블 xxx 엔진 innodb를 변경할 수 있습니다. 이는 기본적으로 테이블을 수정해도 데이터에 아무런 영향을 미치지 않습니다. 하지만 데이터는 재구성됩니다.



수정할 수도 있는 테이블 이름을 최적화하세요. 수정에 도움이 되도록 이 테이블을 최적화하세요.



참고: 테이블의 데이터 및 인덱스 조각을 수정하면 모든 테이블이 재정렬됩니다.

테이블의 행 수가 상대적으로 많은 경우 이 프로세스는 리소스를 많이 소모하는 작업이기도 합니다.

그래서 자주 복구할 수는 없습니다. 더 길어질거야! ! ! !



테이블 업데이트 작업이 매우 빈번할 경우 주/월 단위로 수리가 가능합니다.

빈번하지 않을 경우 1일에 수리가 가능합니다.

위 내용은 mysql 최적화(5) indexing 및 sorting 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.