강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dfdssdsd
dfdssdsd

câu hỏi đã được viết

Tối ưu hóa hiệu suất MySQL

Lý thuyết

실무에서 prefix index를 어떤 요구사항이 있을때 사용하는지 궁금합니다!

Đã giải quyết

Viết

·

458

·

Đã chỉnh sửa

0

실무 요구사항에서 blob, text, 긴 varchar와 같은 칼럼을 인덱싱하는 경우가 있을까요?

당장 기억나는건 게시글 내용 검색 밖에 생각이 안나네요..

 

그리고 요 아래글에 나와있는 prefix index의 한계점도 맞는 말일까요?

https://stackoverflow.com/questions/31526618/mysql-prefix-index-vs-index

(아래는 챗지피티가 요약해준거라 정확하지 않을 수 있습니다 ㅠ)

  1. 인덱스를 통해 "가능한" 행들을 먼저 찾고, 이후 실제 데이터 행을 검색하여 추가 필터링을 수행(두 단계를 거치므로 인덱스를 사용하지 않을때보다 더 많은 시간 소요..?)

2.정렬(sorting)이나 그룹화(grouping) 작업에는 사용되지 않음.

  1. ORDER BY 절을 명시적으로 사용하지 않는 한 결과의 순서는 보장되지 않음

  1. 커버링 인덱스로 사용 불가

 

sqlmysqldbms/rdbmsoptimizing

Câu trả lời 1

1

yjm9505168574님의 프로필 이미지
yjm9505168574
Người chia sẻ kiến thức

안녕하세요~ 질문 남겨주셔서 감사합니다.

 

먼저, Prefix 인덱스는 꽤 다양하게 사용될 수 있는데요.

  • 게시글 본문 내용을 색인하는 경우

  • 이커머스 플랫폼에서 상품 설명이 저장된 긴 내용을 색인하는 경우

  • 로그 데이터나 사용자의 행동을 기록하는 텍스트 필드에서 색인하는 경우

 

그리고 다음 질문 주신 내용인 prefix index의 한계점도 일부 맞는 말입니다:

  • Prefix 인덱스는 해당 prefix로 시작하는 모든 행을 먼저 찾은 다음, 실제 데이터를 검색하여 추가적인 필터링을 수행해야 합니다. 이렇게 두 단계를 거치지만 인덱스를 사용하지 않는 경우보다는 빠를거에요. 물론 인덱스 검색도 전체 데이터의 20~25%이상 조회하는거라면 풀스캔이 더 빠르긴 하겠죠.

  • Prefix 인덱스는 ORDER BY GROUP BY 절에서의 정렬이나 그룹화 작업에 효과적이지 않아요. 이건 인덱스가 전체 값을 포함하지 않기 때문에, MySQL이 결과의 정확한 순서를 보장할 수 없기 때문이에요.

  • 커버링 인덱스는 쿼리가 필요로 하는 모든 데이터를 인덱스에서 직접 가져올 수 있을 때 사용되는데요. Prefix 인덱스는 필드의 일부만을 포함하므로, 쿼리가 해당 필드의 전체 데이터를 필요로 하는 경우 추가적인 디스크 접근이 필요하기 때문에 사용할 수 없어요.

     

 

Hình ảnh hồ sơ của dfdssdsd
dfdssdsd

câu hỏi đã được viết

Đặt câu hỏi