쿼리에 1개의 열에 대한 정렬이 있을 때, 정렬이 있는 인덱스의 목적은 무엇인가요? 정렬을 인덱스에 사용해야 하나요?
단일 컬럼으로 정렬하는 쿼리의 경우, 인덱스 생성 시 명시적인 방향 지정은 불필요합니다. 데이터베이스는 단일 컬럼 B-tree 인덱스를 순방향 및 역방향으로 동일하게 효율적으로 읽을 수 있기 때문입니다. 이 기능은 인덱스가 이미 데이터를 순서대로 저장하고 있으므로 비용이 많이 드는 filesort 작업을 제거합니다. 쿼리가 오름차순을 요청하면 데이터베이스는 인덱스를 처음부터 스캔합니다. 내림차순의 경우 동일한 인덱스를 역방향으로 스캔합니다. 따라서 단일 컬럼에 대해 내림차순 방향으로 인덱스를 생성하는 것은 기본 오름차순 인덱스에 비해 성능상의 이점이 없습니다.그러나 쿼리가 여러 컬럼에 걸쳐 혼합된 정렬 방향을 포함하는 복합 인덱스의 경우 ASC 또는 DESC 지정이 중요해집니다. 기본 복합 인덱스는 혼합 정렬 요구 사항이 있는 쿼리를 효율적으로 지원하지 못할 수 있습니다. 이러한 쿼리를 최적화하려면 인덱스 정의가 쿼리에서 지정한 정렬 방향과 정확히 일치해야 합니다. 예를 들어, score DESC 및 created_at ASC로 정렬하는 쿼리는 (score DESC, created_at ASC)로 명시적으로 정의된 인덱스가 필요합니다.요약하자면, 단일 컬럼 정렬의 경우 일반 인덱스를 생성하면 오름차순 및 내림차순 쿼리를 모두 효율적으로 처리할 수 있습니다. 동일한 방향의 다중 컬럼 정렬의 경우 복합 인덱스가 적합합니다. 다중 컬럼 정렬에서 혼합 방향을 다룰 때는 인덱스 정의가 쿼리의 ORDER BY 절을 완벽하게 반영하도록 하십시오. 이 접근 방식은 비용이 많이 드는 정렬 작업을 피함으로써 최적의 성능을 보장합니다.