SQL文の最適化アプローチ

  • *問合せ操作のための数、特定のフィールドの使用を使用しないでください。
  • 指数
    • 合理的な関与によってフィールドwhere句や順序にインデックスを追加します。
  • where句の最適化
    • where句にNULL値を避けるために分析し、デフォルト値フィールドが応答するように設定されています
      SELECT ID から T NUMはIS ヌル 
      ヌル値に既定値を設定することができる- 。1 (実際の状況に応じて設定)が
      決定されたヌルができているSELECT   IDをから T WHERE NUM = - 。1 
       
    • どこ使用を避けるために、句!=または<>演算子で。
    • Where句を回避するか、接続状態に
      選択 IDをから T ここで、 NUM =  1  又は NUM =  5 
      / * 可以优化为* / 
      選択 ID から T ここで、 NUM =  1つの
      UNICON 全て
      選択 IDフォームT NUM = 5 
    • そしてないでに注意して使用する必要があります
      / * 連続条件* / 
      SELECT ID から T NUM 123 / * 使用の間* / SELECT ID から T NUM BETWEEN 1 及び3 / * より代わりに使用することができるが中に存在する* / SELECT NUM から A WHERE NUM SELECT NUMをからT)
       / * 代替の文* / SELECT NUM
         
      
      
      ここでは、 EXISTS選択 NUM から Bをここ a.num = b.num)
    • ファジィクエリのSQLの最適化
    • / * 通常の状況下では、パーセント記号インデックスは、後に使用することができる* / 
      SELECT   ニックネームから T   ニックネームなどDBA%/ * 指数の前にパーセント記号を使用することができない、SQLを書き換え溶液、逆インデックスを追加します* / 作成インデックス idx_t1_name ON T1(リバース(名))
       SELECTから T1 WHERE リバース(名)のようなリバース' %のADCは' );
       / * パーセント前と後の両方で、これは一般的には、インデックスを使用しません。* / / * 1.検索条件の文字列は、機能を最適化するためのケーブルでSUBSTRインデックス機能を作成し、「ABC%」の例のように使用するように、作成することができ、固定位置の開始文字列に常にあります。 
      
         
      * / 
      作成 インデックス idx_substr_t1_name ON T1(SUBSTR(名前、510 ));
       SELECT ID、名前を、name_type から T1 のsubstr(名前、5。 10のような' ABC%' ;
       / * 2.検索条件の文字は常に文字列の末尾の固定位置は、組み合わせインデックスが逆+ SUBSTR組み合わせ指数関数を作成し、機能を最適化するために作成し、次に「ABC%が」のような逆を使用することができ、発生* / 作成インデックス idx_t1_reverse_nameをON T1(リバース(SUBSTR(名前、1、長さ(名前)- 4。 ))); SELECT 
       
      
      ID、名前、name_type から T1 リバース(SUBSTR(名前、。1、長さ(名)- 4))のようなリバース' %ABC ' / * 3.固定位置検索文字列が最初の共通の確立、最適化、表示されません。インデックス列書き換えSQL * / 作成したインデックス idx_t1_name ON T1(名)SELECT ID、名前、name_type から T1 の名前では、SELECT名前から T1をWHERE名前のような' %% ABC '  
      
      
       
      
       
    • 句フィールドの左側に発現「=」に関数、算術演算または他の操作を排除します
    • 、全表スキャンが発生しますがない、そのような条件でカウント、テーブルからの代わりに使用回数(1)をcounut(*)を選択しないでください

おすすめ

転載: www.cnblogs.com/shar-wang/p/11617855.html