티스토리 뷰

DataBase/MySQL

[MySQL] 쿼리가 index타는지 확인

IT공부블로그 2019. 5. 15. 09:52
728x90
반응형

select문 앞에 explain을 붙이면 인덱스를 사용하는지 안하는지 확인할수있으며 

type에 ALL이 있다면 FullScan 인덱스를 타고있지않다는 표시


경우의수가 적을경우에는 인덱스를 타지않습니다

ex) select * from Table_Name where No>0 and A>0; // 인덱스 안탐


인덱스는 하나만 탑니다

오라클의 경우에는 인덱스를 여러개 걸어주면 그것을 다 타지만 MySQL에선느 인덱스를 하나만 탑니다


결합인덱스 사용법. 

특정 테이블에서 동일한 쿼리문을 주로 사용하고 그 쿼리문이 아래와 같을 경우... 

select * from Table_Name where A='a' and B='b' and C='c'; 

이경우 이 세개의 인덱스를 전부 타기 위해서는 결합인덱스를 걸어줘야 됩니다. 

ALTER TABLE Table_Name ADD INDEX (A,B,C); 

이렇게 인덱스를 줄 경우에 세개의 필드를 정렬해서 하나의 인덱스를 생성하기 때문에 해당인덱스를 탈 수 있습니다.


order by 에서 사용하는 인덱스. 

select * from Table_Name order by A; -> 이경우에 A인덱스를 탑니다. 

select * from Table_Name where B='b' order by A; -> 이경우 B인덱스만 탑니다. 

이경우에 두개의 인덱스를 다 타게 하려면 결합인덱스로 (A,B)를 생성시키고, A의 조건을 where 문에 지정을 해줍니다.

728x90
반응형

'DataBase > MySQL' 카테고리의 다른 글

[MySQL] varchar 타입 order by 하는법  (0) 2019.05.22
[MySQL] 대용량 테이블 스키마 변경하기  (0) 2019.05.17
[MySQL] explain  (0) 2019.05.15
[MySQL]union  (0) 2019.05.15
[MySQL] 잘못된 쿼리 습관  (0) 2019.05.14
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함