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

ヒントディレクティブのないストレート結合のテーブルの順序は、パフォーマンスに影響しますか?

    あなたの質問への答え-はい、テーブルの順序は結合に違いをもたらします。

    オプティマイザに実行プランについて知らせることもできます。

    ORDEREDヒントにより、OracleはFROM句に表示される順序でテーブルを結合します。

    たとえば、このステートメントは、テーブルTAB1をテーブルTAB2に結合してから、結果をテーブルTAB3に結合します。

     SELECT /*+ ORDERED */ TAB1.COL1, TAB2.COL2, TAB3.COL3
         FROM TAB1, TAB2, TAB3
        WHERE TAB1.COL1 = TAB2.COL1
             AND TAB2.COL1 = TAB3.COL1;
    

    結合を実行するSQLステートメントからORDEREDヒントを省略すると、オプティマイザーはテーブルを結合する順序を選択します。オプティマイザーが知らない、各テーブルから選択された行の数について何か知っている場合は、ORDEREDヒントを使用して結合順序を指定することをお勧めします。このような情報により、オプティマイザーよりも内側と外側のテーブルをより適切に選択できます。

    通常、テーブルを分析する場合、オプティマイザーは効率的なスタープランを選択します。ヒントを使用して計画を改善することもできます。最も正確な方法は、FROM句のテーブルをインデックスのキーの順序で並べ、大きなテーブルを最後にすることです。次に、次のヒントを使用します。

    /*+ ORDERED USE_NL(FACTS) INDEX(FACTS FACT_CONCAT) */
    


    1. MySQLトリガー/プロシージャの実行遅延

    2. MySqlの階層データ

    3. Springboot-MySQL設定が機能していません

    4. EAV値をデータ型テーブルに配置する必要がありますか?