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

MySQLでSTRAIGHT_JOINを使用する場合

    正当な理由がない限り、STRAIGHT_JOINを使用することはお勧めしません。私自身の経験では、MySQLクエリオプティマイザは私が望むよりも頻繁に貧弱なクエリプランを選択しますが、一般的にそれをバイパスする必要があるほど頻繁ではありません。これは、常にSTRAIGHT_JOINを使用した場合に行うことです。

    すべてのクエリを通常のJOINのままにしておくことをお勧めします。 1つのクエリが次善のクエリプランを使用していることがわかった場合は、最初にクエリを少し書き直したり再構築したりして、オプティマイザがより適切なクエリプランを選択するかどうかを確認することをお勧めします。また、少なくともinnodbの場合は、インデックス統計が古くなっているだけではないことを確認してください( ANALYZE TABLE )。これにより、オプティマイザが不適切なクエリプランを選択する可能性があります。オプティマイザーのヒントは、通常、最後の手段となるはずです。

    クエリヒントを使用しないもう1つの理由は、データの分布が時間の経過とともに変化したり、テーブルが大きくなるにつれてインデックスの選択性が変化したりする可能性があることです。現在最適なクエリヒントは、時間の経過とともに最適ではなくなる可能性があります。ただし、ヒントが古くなっているため、オプティマイザはクエリプランを適応させることができません。オプティマイザーに決定を任せると、柔軟性が高まります。



    1. SQL Server2005DateAddを使用して日付に日を追加する

    2. JavaでのOracleのRETURNINGINTOの使用法(JDBC、プリペアドステートメント)

    3. MySQLでSQLモードを更新する

    4. OracleのSQLクエリから返されるレコードを制限する