• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

검색? 논리적읽기? 횟수

21.10.16 06:03 작성 조회수 128

0

안녕하세요.
뒤늦은 질문일지도 모르지만 일단 질문드려봅니다 ㅜ
 
1) TestOrders에 NONCLUSTERED INDEX를 하나 만들고
CustomerID = 'QUICK';를 검색할때
하나의 Leaf Page에 QUICK들이 모두 모여있어서 한 페이지만 찾으면되는데, 그렇다고 해도 28개의 QUICK을 찾으려면 최소한 28번은 읽어야 하는게 아닌가요?
 
오히려 WITH(INDEX(Orders_Index01))를 사용한 경우는 SEEK으로 'QUICK'모음을 찾고 그걸 하나씩 검사하기 때문에 논리적읽기가 30인건 어느정도 이해하겠는데
 
SCAN으로 한 경우는 왜 20일까요?
 
2) 예를들어 100개의 데이터중 A라는 데이터가 5개 있고 name으로 검색 가능하다고 했을때
C#의 리스트에서 검색을 할때는 A가 몇개인지는 결국 100개를 다 돌려봐야 하는데 (INDEX를 사용하지 않은)SQL에서는 왜 논리적읽기가 100이 아닌가요?
 
전체를 순회하는건 스캔1에 포함이 되는건가요?

답변 1

답변을 작성해보세요.

2

논리적읽기라는 것이 딱 데이터 1개를 읽는 것을 의미하는게 아닙니다.
아래 링크를 읽어보시기 바랍니다.

https://docs.microsoft.com/ko-kr/sql/relational-databases/reading-pages?view=sql-server-ver15

그리고 데이터가 저장된 구조에 따라 세부적인 숫자는 달라질 수 있습니다.