-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chapter 8.5 ~ 9.2 #5
Comments
MySQL 옵티마이저가 풀 테이블 스캔을 하는 경우는?
아래의 쿼리는 항상 풀 테이블 스캔을 하는가?
mysql> SELECT COUNT(*) FROM employees;
아래 DISTINCT 쿼리의 경우 first_name 컬럼만 유니크한 레코드를 조회하는가?
mysql> SELECT DISTINCT first_name, last_name FROM employees;
|
싱글 패스와 투 패스의 비교
싱글 패스의 경우 한 번의 쿼리만으로 결과를 확인할 수 있지만, 소트 버퍼의 크기가 더 필요하다. 정렬할 땐 불필요한 칼럼을 SELECT 하지 않도록 한다. 풀 테이블 스캔과 리드 어헤드
풀 테이블 스캔이 실행되면 처음 몇 개의 데이터 페이지는 포그라운드 스레드가 페이지 읽기를 실행하지만 특정 시점부터는 읽기 작업을 백그라운드 스레드로 넘겨 미리 디스크를 읽어 InnoDB 버퍼 풀에 가져다 둔다. 이렇게 되면 포그라운드 스레드는 미리 버퍼 풀에 준비된 데이터를 가져다 사용하기만 하면 되므로 쿼리가 빨리 처리되는 것! → 리드 어헤드는 풀 인덱스 스캔에서도 동일하게 사용되는데, 인덱스가 2~3개의 컬럼만으로 구성되기 때문에 테이블 자체보다는 용량이 작아서 훨씬 빠른 처리가 가능한 것임 드라이브 테이블과 드리븐 테이블조인을 실행할 때 테이블의 순서는 쿼리의 성능에 매우 큰 영향을 미친다. DISTINCT 처리
|
Q. 함수기반 인덱스를 사용할 때에는 테이블을 생성할 때 사용한 표현식이 아니여도 함수 결과만 인덱스와 같다면 인덱스 스캔을 진행한다.(O, X) https://tianea.notion.site/MySQL-4-25adfc85591943748d05ee98ed71e083 |
|
No description provided.
The text was updated successfully, but these errors were encountered: