クエリ最適化(クエリさいてきか、: query optimization)とは、多くのデータベース管理システム (DBMS) の持つ機能であり、クエリ (データに対する問い合わせ) を実行する最も効率的な方法を決定する。クエリオプティマイザ(query optimizer)とも言う。クエリオプティマイザは、入力されたクエリについて考えられるクエリ実行計画群を評価し、どれが最も効率的か決定する。コストに基づいたクエリオプティマイザでは、個々の計画のコストを見積もり、最もコストの低い計画を選ぶ。コストはクエリ実行時コストであり、入出力(I/O)操作数、CPU時間、その他から決定する。評価されるクエリ実行計画群は、可能なアクセス経路(例えば、インデックス検索、シーケンシャル検索)と結合アルゴリズム(例えば、ソートマージ結合ハッシュ結合、入れ子ループ)の組み合わせから生成される。探索空間は入力されたSQLクエリによっては非常に大きくなる可能性もある。

クエリ最適化をユーザーが直接操作することはできない。クエリがデータベースサーバ (DBMS) に対して発行され、パーサーが構文解析すると、その結果がクエリオプティマイザに送られ、クエリ最適化が行われる。



쿼리 최적화란, 많은 데이터베이스 관리 시스템(DBMS)이 갖는 기능으로 쿼리(데이터 대한 질의)를 실행하는 가장
효율적인 방법을 결정한다. 쿼리 옵티마이저라고 한다. 쿼리 옵티마이저는 입력된 쿼리에 대해서 유추할 수 있는
쿼리실행계획군을 평가하고, 어느 것이 가장 효율적인지 결정한다. 코스트를 기본으로 한 쿼리 옵티마이저에서는 
각각 계획의 코스트를 견적을 내고, 가장 코스트가 적은 계획을 선택한다. 코스트는 실행시의 코스트로 입출력(I/O) 조작수,
CPU시간, 그 외 것들로부터 결정된다. 평가된 쿼리 실행군은 가능한 접근 경로(예를 들면, 인덱스 검색, 시퀀스 검색)과
결합 알고리즘(예를 들면, 소트 머지 조인, 해쉬 조인, 입력자루프)의 조합으로 생성된다. 탐색공간은 입력된
SQL쿼리로 인해 대단히 크게 될 가능성이 크다.

쿼리 최적화를 유저가 직접 조작할 수는 없다. 쿼리가 데이터베이스서버(DBMS)에 대해서 발행되고, 파서가 구문해석하면
그 결과가 쿼리 옵티마이저에 보내져, 쿼리 최적화가 일어난다.
Posted by 자수성가한 부자