- インデックスの故障への暗黙的な変換リード。これに注意を払う必要があります。また、開発には、多くの場合、間違いを犯します。
テーブルのフィールドはtu_mdn VARCHAR2(20)として定義され、その数は、タイプOracleに渡された条件にクエリとしてフィールドでは、これは、インデックスの故障につながるからです。
悪い例:tu_mdn = 13333333333テストから選択します。
正しい例:tu_mdn =「13333333333」試験から選択します。
- 、I平均のインデックス列操作はインデックス列故障原因インデックスが含ま算出する(+、 - !,, /、など)
悪い例:ID-1 = 9試験から選択します。
正しい例:ID = 10試験から選択します。
- 指数関数に基づいてインデックスに使用したOracleの内部機能障害の結果は、このような場合のために作成する必要があります。
悪い例:テストラウンド(ID)= 10から選択し、説明し、インデックスが無効IDされたとき
正しい例:最初の()ID(丸)テストのインデックスtest_id_fbiidxを作成し、機能的指標を確立し、次にテストラウンド(ID)= 10 SELECT * FROM;その場合指数関数の関数を
- 、避けるべきで失敗し、次のインデックスを使用します。
A。使用<>、存在しないではない、で、!=
B。「%」パーセントフロント様(この方法は、(COLUMNNAME)逆インデックス付けを用いて治療することができます)
C.インデックスは、その最初の列は、where句参照するだけで、複数の列に基づいている場合、別途非索引付けされた列の最初の位置における参照複合インデックスをカラムは常に、最初のインデックスを使用する必要があるとき、オプティマイザはインデックスを使用することを選択します。
D.文字番号フィールドは、引用符WHERE条件に追加されません。
すなわちとき変数が変数回で使用され、テーブルのフィールドが使用されている日付変数である。またはその逆れます。
- 比較演算子(記号)と直接比較して変数の値を空にしないでください。
変数が空であってもよいし、または使用がNULL IS NOT NULLである場合に比べて、またはISNULL関数を使用します。
- SQLコードでは二重引用符を使用しないでください。
文字定数は、単一引用符を使用しているため。オブジェクト名は、必ずしも限定されるものではない場合、括弧内の名前を囲むように(非標準ANSI SQL)を使用することができます。
-
インデックステーブルスペースとデータが異なるディスクのチャンクに位置している表スペース、ヘルプが効率指標のクエリを向上させるところ。
-
コストベースのSQLオプティマイザ(CBO)のOracleのデフォルトの使用が統計に大きく依存している統計情報が正常でないと、それは、インデックスの使用につながるか、間違ったインデックスデータベースクエリを使用しません。
一般的には、統計情報のステートメントを更新含まれますが、テーブルのデータが(20%以上)比較的大きな変化がある場合に考慮することができるOracleの自動化されたタスクは、直ちに手動のような統計情報を、更新:テーブルABCの計算の統計情報を分析したが、システムリソースを消費し、更新統計が、システムがアイドル状態のときに実行することが推奨されることに注意してください。
- クエリのOracleを実行する場合、一般的にテーブルのためのインデックスのみを使用します。
そのため、時々あまりにも多くのインデックスは、間違ったインデックスを使用してOracleにつながるクエリ効率を低下させる可能性があります。クエリは、システムが1のインデックス、クエリの効率と比較してインデックス2を、使用するかもしれないpolicyno =「XX」及びclasscode =「XX」の場合、例えば、テーブルは、インデックス1(Policyno)とインデックス2(classCode)を有しています大幅に減少しました。
-
優先順位、可能な限り、パーティションインデックスを使用。