sql >> データベース >  >> RDS >> Oracle

Oracleの隠し機能

    「全表スキャンは必ずしも悪いわけではありません。インデックスは常に良いとは限りません。」

    インデックスベースのアクセス方法は、作業単位ごと(通常は論理読み取りごと)にアクセスされる行の観点から測定する場合、フルスキャンよりも行の読み取り効率が低くなります。ただし、多くのツールは全表スキャンを非効率の兆候として解釈します。

    請求書テーブルから数百の請求書を読み、小さなルックアップテーブルで支払い方法を検索している例を考えてみましょう。インデックスを使用してすべての請求書のルックアップテーブルをプローブすることは、おそらく請求書ごとに3つまたは4つの論理ioを意味します。ただし、請求書データからのハッシュ結合の準備としてルックアップテーブルを完全にスキャンするには、おそらく2、3回の論理読み取りのみが必要であり、ハッシュ結合自体はほとんど費用をかけずにメモリ内で実行されます。

    ただし、多くのツールはこれを調べて「全表スキャン」を確認し、インデックスを使用するように指示します。そうすると、コードのチューニングが解除された可能性があります。

    ちなみに、上記の例のようにインデックスに過度に依存すると、「バッファキャッシュヒット率」が上昇します。これが、BCHRがシステム効率の予測因子としてほとんど意味をなさない理由です。



    1. SQLServer2005のアトミックUPSERT

    2. Fluent NHibernateおよびPostgreSQL、SchemaMetadataUpdater.QuoteTableAndColumns-System.NotSupportedException:指定されたメソッドはサポートされていません

    3. SqlDataAdapterを使用して行を挿入する

    4. MySQLでrootユーザーとして設定およびログインする方法