[SQL] 최적화 기본

[원본 링크]

대부분의 관계형 데이터베이스 시스템은 우리가 작성해서 날린 쿼리를 그대로 실행하진 않는다.

좀더 빠르고 효율적으로 접근과 갱신을 수행할 수 있도록 최적화를 거친 뒤 작업을 행하는데, 이런 최적화를 수행해주는 친구를 옵티마이저(Optimizer)라고 한다.


옵티마이저의 종류
옵티마이저는 크게 2가지로 분류될 수 있다.

  1. 규칙 기반 옵티마이저
  2. 비용 기반 옵티마이저

규칙 기반은 정해진 규칙에 의해서만 최적화를 수행하고.
비용 기반은 비용을 최대한 줄일수 있는 방법으로 최적화를 수행한다.

근데 결국 중요한건 결과, 실제 비용이니. 대부분의 시스템에선 비용 기반의 최적화만을 사용한다 보면 된다.


실행 계획
실행 계획은 날라온 쿼리를 실제로 어떻게 실행할지를 담는 내용이다.

최적화 등의 차이 때문에 같은 쿼리라도 시스템마다 천차만별의 실행계획이 생성된다.


참조
http://iloveulhj.github.io/posts/sql/sql-basic-optimization-principle.html
http://qwefgh90.github.io/sphinx/database/sql_optimize.html