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

良いインデックスが何であるかをどうやって知るのですか?

    これは、「良い」と「悪い」の意味によって異なります。基本的に、追加するすべてのインデックスは、その列による検索のパフォーマンスを向上させることを理解する必要があります(したがって、personテーブルの'lastname'列にインデックスを追加すると、 "where lastname ="が含まれるクエリのパフォーマンスが向上します)。テーブル全体の書き込みパフォーマンスが低下します。

    この理由は、行を追加または更新するときに、テーブル自体とその行がメンバーであるすべてのインデックスの両方に追加または更新する必要があるためです。したがって、テーブルに5つのインデックスがある場合、追加ごとに6つの場所(5つのインデックスとテーブル)に書き込む必要があり、最悪の場合、更新によって最大6つの場所に影響が及ぶ可能性があります。

    インデックスの作成は、クエリ速度と書き込み速度の間のバランスを取る行為です。夜間のジョブで週に1回だけデータをロードするが、毎日何千回もクエリを実行するデータマートなど、場合によっては、インデックスで過負荷になり、クエリを可能な限り高速化することが非常に理にかなっています。ただし、オンライントランザクション処理システムの場合は、それらの間のバランスを試してみてください。

    つまり、selectクエリで頻繁に使用される列にインデックスを追加しますが、追加しすぎないようにして、最もよく使用される列を最初に追加します。

    その後、負荷テストを行って本番環境でパフォーマンスがどのように反応するかを確認し、調整可能なバランスを見つけるために多くの調整を行います。



    1. ORACLE-ORA-01843:有効な月ではありません

    2. 結合を使用したOracleUpdateクエリ

    3. Oracle DROP TABLE IF EXISTS Alternatives

    4. WHERE句で同じ列を複数回使用する