인덱스 순서는 MySQL 문을 최적화합니다

출처: 인터넷
작성자: 사용자
키워드: 웹 프로그래밍 MySQL 자습서

인덱싱에 대 한 몇 가지 지침:

1, 데이터 읽기, 데이터베이스의 응답 속도 느려지며 무리 한 색인의 효율성을 가속화할 수 있다 적당 한 색인.

2, 더 많은 인덱스, 데이터 업데이트의 느린 속도.

3, 인덱스를 사용 하는 경우 MyISAM 엔진으로 사용 하려고 (때문에 MySQL의 btree 저장 색인), 이노 Db 보다. 하지만 MyISAM 트랜잭션을 지원 하지 않습니다.

4, 프로그램 및 데이터베이스 구조/SQL 문을 최적화 하지 수 정도로 최적화 되어 프로그램 병목 현상을 원활 하 게 해결 되지 않을 수 있습니다 때, 고려해 야 memcached 등의 사용 분산된 캐싱 시스템.

5, 습관 하 고 자신을 사용 하 여 SQL 문장의 성능 분석을 설명.

수 있도록 쉽게 실수:

의미는 선택한 필드에 인덱스를 배치 하지 마십시오. 어디, 주문 등 조건에 대 한 선택 문에 인덱스를 합리적으로 배치 해야 합니다.

예:

선택 id, 제목, 내용, 문서 어디 cat_id cat_id = 1;

위의 진술에 인덱스 넣어 id/제목/내용은 의미가 없다,이 진술에 대 한 아니 최적화. 그러나 외래 키 cat_id에 인덱스를 넣으면 효과가 꽤 큽니다.

문으로 여러 일반적인 순서를 위한 MySQL 최적화:

1, 주문 + 인덱스 최적화의 조합을 제한 합니다. 경우에 SQL 문의이 같은 모양입니다.

선택 [열 1], [column2]... [정렬]도 [오프셋], [테이블] 순서에서 [제한];

이 SQL 문을 최적화는 간단 하 게, 그리고 [정렬] 필드에 이루어집니다 인덱싱.

2, 어디 + 주문 + 조합 형태의 인덱스 최적화의 제한:

선택 [열 1], [column2]... [표]에서 어디 [COLUMNX] [정렬]도 [오프셋], [값] 순서 = [제한];

이 성명, 여전히 인덱싱, 비록 인덱스를 사용할 수 있습니다, 하지만 효율성 높은 방법의 첫 번째 예제를 사용 하는 경우. 보다 효율적인 접근 (Columnx, 정렬) 연결 된 인덱스를 만드는 것입니다.

3, 어디 +에 의해 주문 + + 인덱스 최적화, 조합과 같은 제한:

선택 [열 1], [column2]... [표]에서 어디 [ColumnX] ([Value1],[value2],...)에 [정렬]도 [오프셋], [제한];

이 문을 두 번째 예제에서는 인덱싱의 메서드를 사용 하 여 얻지 않을 것 이다 원하는 효과 (만 [정렬]에서 사용 하는 인덱스, 어디는 어디를 사용 하 여, filesort를 사용 하 여) 여러 해당 COLUMNX 값 경내에.

이 문을 최적화 하는 방법? 내가 되 고, 시간에 대 한 좋은 아이디어의 생각 하지 않았다 그리고 조합으로 문을 분할 하 고 두 번째 예제에서 인덱스를 작성 하 고 있던 인터넷에 저렴 한 제공을 보았다:

선택 [열 1], [column2]... [표]에서 어디 [columnx] = [값 1] 순서 [정렬]도 [오프셋], [제한]


연합


선택 [열 1], [column2]... [표]에서 어디 [columnx] = [값 2] 순서 [정렬]도 [오프셋], [제한]


연합


...

그러나, 그것은이 방법은 전혀 작동 하지 않습니다 그리고 효율성은 낮은, 그것은 테스트 중 대부분의 응용 프로그램에 대 한 정렬 인덱스의 지정 된 사용을 강제로 더 나은 입증 되었습니다.

4, 식 (기능) 분야에는 적용 되지 않습니다 어디 예를 들어, 주문:

선택 * [테이블]에서 년 (날짜)도 0, 30;

5, 어디 +와 같은 여러 필드 + 제한, 주문

선택 * [테이블] 어디 uid = 1 순서 x, y도 0, 10;

이 진술에 대 한 (X, Y, UID) 하는 한 이러한 인덱스를 추가할 수 있습니다. 하지만 실제로 더 나은 효과 (uid, x, y). 이는 MySQL에서 정렬 처리 하는 메커니즘에 의해 발생 합니다.

위의 예제를 사용 하 여 실제 프로젝트에서 효과를 보고 하는 것을 잊지 마세요 때 인덱스를 추가한 후 설명 합니다.

관련 문서

연락처

이 페이지의 내용은 인터넷에서 가져온 것이므로 Alibaba Cloud의 공식 의견이 아닙니다.이 페이지에서 언급 된 제품 및 서비스는 Alibaba Cloud와는 관련이 없으므로이 페이지의 내용이 골칫거리 인 경우 저희에게 알려주십시오. 우리는 5 일 근무일 이내에 이메일을 처리 할 것입니다.

커뮤니티에서 표절 사례를 발견한 경우 info-contact@alibabacloud.com 으로 관련 증거를 첨부하여 이메일을 보내주시기 바랍니다. 당사 직원이 영업일 기준 5일 내에 연락 드리도록 하겠습니다.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.