Index는 데이터 검색 효율성을 높이고 데이터베이스의 IO 비용을 줄일 수 있으며, 인덱스는 데이터베이스의 정렬 비용도 줄일 수 있습니다. 정렬 그룹화 작업은 주로 CPU 리소스와 메모리를 소모하므로 정렬 및 그룹화 작업에서 인덱스를 잘 활용하면 CPU 리소스 소모를 크게 줄일 수 있습니다.
색인 생성 여부를 어떻게 결정하나요?
1. 쿼리의 조건으로 자주 사용되는
필드는 누구나 알고 있습니다. 자주 가르친다는 것은 무엇을 의미하는가? 실행하는 모든 SQL 문을 분석합니다. 하나씩 나열하는 것이 가장 좋습니다. 그러다 분석 결과 일부 필드가 대부분의 SQL 문 쿼리에 사용된다는 사실을 발견하고 이에 대한 인덱스를 과감하게 생성했습니다.
2. 고유성이 낮은 필드는 인덱싱에 적합하지 않습니다.
고유성이 낮은 필드란 무엇인가요? 상태 필드 및 유형 필드 등이 있습니다. 사용자 로그인 상태, 메시지 상태 등과 같은 몇 가지 고정 값만 저장하는 필드입니다. 이는 인덱스 스캐닝의 특성과 관련이 있습니다. 예를 들어, 인덱스를 통해 키 값 A와 B를 가진 일부 데이터를 찾고, A를 통해 일치하는 데이터 조각을 찾고, 이 데이터는 X 페이지에 있으며, 계속 스캔하고, A와 일치하는 데이터가 Y 페이지에 나타나는 것을 찾습니다. , 그러면 스토리지 엔진이 페이지 X의 데이터를 삭제하고 다시 스캔하며 페이지 X는 2번 또는 심지어 여러 번 스캔됩니다. 비유하자면, 동일한 데이터 페이지를 반복해서 읽고, 버리고, 다시 읽을 수 있으며, 이는 의심할 여지없이 스토리지 엔진의 IO 부담을 크게 증가시킵니다.
3. 업데이트빈번한 필드는 인덱스 생성에 적합하지 않습니다.
이 필드에 대한 인덱스를 생성할 때 필드 데이터를 다시 업데이트할 때 , 데이터베이스는 자동으로 해당 인덱스를 업데이트하므로 이 필드가 너무 자주 업데이트되면 인덱스가 지속적으로 업데이트되어 성능에 미치는 영향을 상상할 수 있습니다. 수십 번 검색되고 한 번 업데이트된 필드만 인덱싱 사양에 더 부합합니다. 필드가 동일한 기간에 여러 번 업데이트되면 해당 필드를 색인화할 수 없습니다.
4. where 조건에 나타나지 않는 필드는 인덱싱하면 안 됩니다.
이건 다들 아시리라 믿습니다.
위 내용은 MySQL 인덱스는 언제 생성되나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!