약 40만건의 데이터가 있는 데이블에 인덱스만 지정되어 있고 pk는 따로 없습니다. 그런데 이 상태에서 select를 하면 약 20만건의 데이터를 조회하는데 1분 가까이가 걸리네요. And 조건에 걸려 있는 컬럼들은 인덱스로 설정되어 있구요,
인터넷을 찾아보니 pk를 추가하면 성능 향상에 도움이 된다하여 pk auto_increment 컬럼을 추가했는데 결과는 똑같더라구요. 인덱스가 추가된다음에 pk를 추가하면 효과가 없는건가요?
인덱스는 대량의 자료 중 극히 일부 자료를 검색할 때 유용합니다. 40만건 중 20만건 검색시에는 인덱스 검색이 오히려 더 느릴 수 있습니다. 실제로 인덱스를 타고 있는지 풀스캔을 하고 있는지? 실행계획을 확인해 보세요.
PK 의 역할은 검색속도 향상이 아니라 레코드 식별자 역할을 하는 것입니다. 검색 속도 향상은 인덱스의 역할이구요. 물론 PK 를 생성하면 해당 항목 인덱스가 자동 생성되기는 합니다.
답변 감사합니다. 디비는 경험이 많이 부족해서 모르는 게 넘 많네요. 말씀하신 실행계획을 확인해봐야겠습니다.