(1)実行計画は何である
各条件が異なる実行計画の形成に異なる需要、シーケンシャルアクセスで、SQLは馬鹿言語です。Oracleは一度だけ1つのアクセス・パスが存在し、選択をしなければなりません。アクセス・パスは、実施計画です。
(2)計画の実施を選択し
、通常は複数のSQLの実行計画で、その後、どのように我々は選ぶのですか?下の実行コストの種類、それがより良いパフォーマンスを意味し、より速く、我々は、Oracleの解決プロセスと呼ばれるプロセスをいずれかを選択しますと、Oracleは意志より良い実行計画共有プールSGAさんに、その後の共有プールは、ちょうどラインに乗るのと同じSQLを再実行し、あなたは分析に行く必要はありません。
(3)は、選択に基づく実施計画
統計によると、プログラムを実行することを。
(4)統計情報
(4.1)の統計どのようなものがあり
、レコードの数が特定のビューDBA_TABLES / DBA_INDEXES、ブロックの数
(4.2)Oracleは統計を収集する方法
①Oracleが(:22:00、土曜日と日曜日:金曜日にデフォルト月曜日06:00)時間のテーブルとインデックス期間の特定のコレクション内の統計を選択します、ユーザーが調整することができます主ピークを避けるために、
分析②テーブルとインデックスが閾値を自動的に分析する超え、閾値限界を有しています。データは変化量ではない場合、Oracleは、分析するつもりはない、
③柔軟な方法を集めます。パーティション内のパーティションテーブルに対して実行されてもよい、平行では、テーブルとインデックスの情報を収集するために使用することができます。
(4.3)の統計情報を収集する方法
- 表の統計を収集する のEXEC DBMS_STATS.GATHER_TABLE_STATSスキーマ(ownname => ' LIJIAMAN '、TABNAME => ' TEST02 '、ESTIMATE_PERCENT => 10、METHOD_OPT => ' すべての列を索引付けするための' ); - 索引統計が収集 Execの DBMS_STATSを。 GATHER_INDEX_STATSスキーマ(ownname => ' LIJIAMAN '、INDNAME => ' ID_IDX '、ESTIMATE_PERCENT => 10、度=> ' 4 ' ); -テーブルとインデックスの統計収集中 のEXECスキーマ(ownname DBMS_STATS.GATHER_TABLE_STATS => ' LIJIAMAN '、TABNAME => ' TEST02 '、ESTIMATE_PERCENT => 10、METHOD_OPT => 'をすべてインデックス付き列に対して'、カスケード => trueに)。
(5)動的サンプリング
のOracle統計は、統計情報を収集するためにどのように新しいテーブル、ORACLため、通常の状況下では、毎日特定の時間に集まっていますか?ダイナミックサンプリング。
AUTOTRACE SET ON
SET LINESIZE千
SQL文を実行-
(レベルこの文のために使用される動的サンプリングがあるでしょう- = 2) キーワード
[完了]
参考図書:「収穫、以上のSQLの最適化」