5. 자주 하는 실수 (Tip)
실수 1: 계획을 안 보고 인덱스부터 만든다
느린 이유가 인덱스 부족이 아닐 수도 있습니다. 함수를 씌운 조건, 타입 불일치, 낡은 통계, 너무 넓은 범위가 원인일 수 있습니다. 먼저 계획을 보고 전체 읽기가 어디서 나오는지 확인한 뒤 고칩니다.
실수 2: 예상 계획만 믿는다
예상 계획은 통계로 짐작한 것이라 실제와 다를 수 있습니다. 느린 쿼리는 실제 실행 통계로 E-Rows 와 A-Rows 를 비교합니다. 다만 실제 실행은 쿼리를 정말 돌리므로 변경 문장에는 트랜잭션 안에서 쓰고 롤백합니다.
실수 3: 비용 숫자를 DB끼리 비교한다
Oracle Cost 32 와 MySQL cost 32 는 같은 뜻이 아닙니다. 비용은 DB 내부 단위입니다. 같은 DB 에서 같은 쿼리를 고치기 전후로 견줄 때만 참고하고, 실제로는 읽은 행 수, 논리적 읽기 수, 걸린 시간을 봅니다.