>  기사  >  데이터 베이스  >  mysql 최적화 (4) 인덱스 적용 범위 및 최적 인덱스

mysql 최적화 (4) 인덱스 적용 범위 및 최적 인덱스

黄舟
黄舟원래의
2016-12-29 16:09:121283검색

색인 커버리지** 아주 중요한 개념은 색인을 검색하는 것입니다! ! !

쿼리한 열이 인덱스의 일부인 경우 인덱스 파일에 대해서만 쿼리를 수행하면 되며 데이터를 찾기 위해 디스크로 돌아갈 필요가 없습니다.

이런 종류의 쿼리는 매우 빠르며 "인덱스 적용 범위"라고 합니다.

비클러스터형 인덱스 인덱스 파일은 데이터 되감기에 해당하므로 시간이 낭비됩니다.

인덱스와 데이터의 차이

인덱스는 효율적으로 구성된 트리, 노드, 리프 구조 검색이 데이터보다 좋습니다.

인덱스를 메모리로 가져와서 쿼리할 수 있습니다.

인덱스의 데이터 구조 자체도 간단하고 메모리에 넣는 속도가 엄청 빠릅니다

. . . . . . . . . 그래서 돌아오자마자 꽉 찼어요. . . 나는 닦는다. . .

그래서 두 개의 인덱스를 생성하면 index( uid ,aid)

원하는 데이터가 인덱스 트리에 포함되어 있는 경우(예: help = 1인 msg에서 uid 선택

찾고 싶은 내용을 색인에 담았기 때문에 메모리에서 직접 색인을 가져오는 속도와 효율성이 매우 빨라 다시 돌아가서 검색할 필요가 없다.

최적의 색인:

자주 쿼리하고 구별하기 높은 차수, 작은 길이

공통 필드를 커버하도록 노력, ------>인덱스 적용 범위

왼쪽 접두사는 쉽지 않음 구별하려면 URL을 뒤집어서 콘텐츠를 얻으세요. 왼쪽 접두사는 구별하기 쉽습니다.

crc32를 고유하게 구별하는 유사 해시 crc32() 함수('http://wwww.baidu.com'); 인덱싱을 피하기 위해 URL을 인덱싱하는 대신 urlcrc에 대한 인덱스

효과 보기 설명 알아보기

의사 해시 인덱스 효과

동시에 url_hash 열 저장

create table t10 (
id int primary key,
url char(60) not null default ''
);
insert into t10 values 
(1,'http://www.baidu.com'),
(2,'http://www.sina.com'),
(3,'http://www.sohu.com.cn'),
(4,'http://www.onlinedown.net'),
(5,'http://www.gov.cn');
alter table t10 add urlcrc int unsigned not null;

sql이 저장되면 crcurl== crc32(url),

crc의 결과는 32비트 int unsigned 숫자이므로, 데이터가 40억을 초과하면 중복이 발생하지만 그만한 가치가 있습니다.

(인덱스 길이는 int4바이트입니다.)



다중 인덱스 디자인

하지만 쇼핑몰의 실제 업무로 볼 때 고객은 일반적으로 큰 카테고리를 먼저 선택합니다 -> 작은 카테고리 -> 브랜드,

마지막으로 (1)index(cat_id,brand_id), + index(cat_id)를 선택합니다. ,shop_price)를 사용하여 인덱스를 구축

(3)index(cat_id,brand_id,shop_price) ), 3개의 중복 인덱스 중복 필드를 추가할 수도 있습니다. . .



그러나 (3)의 처음 2개 열은 (1)의 처음 2개 열과 동일하고 (1)을 제거합니다



index(cat_id,price) 및 index(cat_id,brand_id,shop_price), 즉 왼쪽 접두사 원칙은 중복될 수 있지만 반복될 수는 없습니다.


위 내용은 mysql 최적화입니다. ( 4) Index Coverage 및 최적의 Index 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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