우리 응용 프로그램이 아직 출시되지 않았기 때문에 이것이 조기 최적화라고 생각합니다. 나는 우리가 라이브에 들어간 후 느린 쿼리를 모니터링하고 그에 따라 인덱스를 추가 할 것을 제안했습니다.
최종 사용자와 프로덕션 환경을 품질 보증처럼 취급 할 수 없습니다. 다시 말해, 프로덕션 환경에서 알아낼 것입니다. 나는 그것이 옳은 방법이라고 생각하지 않으며, 그 접근법은 매일 끔찍하게 잘못되는 것을 본다 .
넓은 브러시로 페인트를 칠할 수 없으므로 한 가지를 명심해야합니다.
일반적인 작업량 은 무엇입니까 ?
그것은 분명하거나 둔하게 들릴지 모르지만 실제로는 중요합니다. 작업 부하의 98 %를 구성하는 10 개의 쿼리가 있는 경우 (일반적으로 믿거 나 말거나) 프로덕션 전에는 권장 사항을 분석 하는 것이 좋습니다 . 현실적이고 대표적인 데이터를 사용하여 10 개의 쿼리가 가능한 한 우수해야합니다 ( 완벽한 것은 시간이 많이 걸리고 거의 달성 할 수없는 낭비입니다).
들어 작업 부하의 2 %를 구성하는 다른 200 개 쿼리 , 사람들은 대부분 노력의 톤 가치가 없으며, 생산 문제 해결 기이 반환 한 코너의 경우를 만들 것입니다. 그것은 또한 현실이며, 끔찍한 나쁜 것은 아닙니다. 그러나 이것이 인덱싱 모범 사례를 무시하거나 데이터 검색에 대한 추정 가정을 의미하는 것은 아닙니다.
프로덕션 전에 데이터베이스 성능을 파악하는 것이 일반적이며 좋은 방법입니다. 실제로, 개발 DBA 라는 이런 유형에 대해 비교적 일반적인 입장이 있습니다.
그러나...
어떤 사람들은 그것을 너무 멀리 가져 가서 "경우에 따라"색인을 추가하는 것에 열광합니다. 누군가 이것이 누락 된 색인을 권장합니까? 그것을 추가하고 다른 네 가지 변형을 추가하십시오. 또한 나쁜 생각입니다. 데이터 검색뿐만 아니라 데이터 수정은 어떻습니까? 테이블에 인덱스가 많을수록 일반적으로 데이터를 수정할 때 더 많은 오버 헤드가 발생합니다.
대부분의 것들과 마찬가지로 건전한 균형이 있습니다.
재미있는 작은 참고로 ... "인덱스"의 복수형
"지표"는 재정적 인 사람들을위한 것입니다
"인덱스"는 우리를위한 것입니다