-
(mariadb/mysql) 오토캐스팅 과 인덱스데이터 베이스 2022. 4. 12. 17:57
Auto casting이란? 형 변환이 자동으로 이루어 지는 것 을 뜻합니다.
mysql은 우선순위에 의거하여 형변환이 자동으로 이루어집니다.
가령 문자열과 숫자의 경우 숫자의 우선순위가 높아서 문자열이 숫자로 형변환 됩니다.
select * from erp where erpno = 123;
위 예시 쿼리에서 erpno 가 varchar타입으로 문자열이라고 가정합니다.
where 문에 erpno = 123 에서 123은 숫자이며 erpno 는 문자입니다.
우선순위에 의거하여 문자열인 erpno 가 숫자형으로 형변환 되어 동등비교가 실행됩니다.
이때 만약 erpno 에 인덱스가 설정되어 있다고 생각해봅시다.
해당 인덱스는 erpno 의 타입이 문자열 임으로 erpno 문자열을 기반으로 만들어 졌습니다.
그런데 erpno 를 숫자로 형변환 후 비교하게 된다면?
당연하게도 인덱스를 타서 조회 할 수 없게 됩니다.
이제 반대의 경우를 생각해 봅시다.
select * from erp where erpno = '123';
이번에는 erpno 가 숫자형이며 '123'의 문자열과 비교를 한다고 가정합니다.
이 경우에는 문자열인 '123'이 숫자 123으로 캐스팅됩니다.
이 때 erpno 에 인덱스를 만들어 두었다면 비교대상이 같은 숫자 타입임으로 동등비교시 인덱스를 통해 조회 할 수 있게 됩니다.
'데이터 베이스' 카테고리의 다른 글
(mariadb/mysql) 결합 인덱스 (0) 2022.04.17 (mariadb/mysql) between 과 in의 활용 (0) 2022.04.13 (mariadb/mysql) 메뉴얼 읽는법 (0) 2022.04.12