DB 인덱스 조건

phantom0308
Nov 30, 2020

--

DB index 조건, where 절에서 많이 사용하고, 데이터 건수가 많을때…

index가 없는 상태에서 1000건을 조회하면 전체 데이터 중 해당 where 조건에 있는 데이터를 조회, index를 사용하였을때는 해당 조건의 데이터 건수 중 조회하게 됨.
ex) select * from table where a=4 and b=2; 의 경우 a, b를 찾기 위해 전체 데이터 중 a와 b를 걸러내지만, a에 INDEX를 걸면 a=4인 데이터 중 b를 조회한다.

INDEX를 거는 조건은 카디널리티가 높은(중복되는 데이터 분포 적은) 수준의 컬럼에 작업하는 것이 좋다.

경험으로 TABLE ROW 수가 4~500만건(크기 40~50GB)의 TABLE에서는 인덱스가 안타는 경우가 생긴다. 옵티마이저가 INDEX로 SELECT 하는 것 보다 FULL SCAN이 더 낫다고 생각하여, INDEX를 걸지 않는 경우가 생긴다. 고로, TABLE을 아카이빙하는 프로세스도 필요하다.

--

--

No responses yet