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

MySQL InnerJoinに制限はありますか?

    MySQLのJOINの制限に近いところはありません。参加数は悪くありません。ただし、派生テーブルにはインデックスがないため、実行中に派生テーブル(内部サブクエリ)に参加すると、パフォーマンスの問題が発生する可能性があります。インデックスのない派生テーブルでの結合の実行は遅くなる可能性があります。

    結合するためのインデックスを使用して実際の一時テーブルを作成することを検討するか、サブクエリを回避する方法を考え出す必要があります。

    MySQLのJOINは、基本的に、結合された各行のルックアップ(シーク)を実行するようなものです。したがって、多くのレコードを結合する場合、MySQLは多くのルックアップを実行する必要があります。問題になる可能性があるのは、結合する行の数よりも、結合するテーブルの数の方が重要です。

    とにかく、MySQLは、あきらめてテーブル全体を読み取る前に、非常に多くのシークを実行するだけです。どちらがより安価になるかを決定するのにかなり良い仕事をします。

    おそらく、あなたができる最善のことは、ANALYZETABLEでインデックス統計を更新することによって推測を助けることです。

    SELECTごとに1つのWHERE句を設定できます。したがって、内側のサブクエリにはWHERE句があり、外側のクエリにはWHERE句があり、これらはJOINの後に適用されます(少なくとも論理的には、MySQLはパフォーマンスのために最初に適用します)。

    また、これはすべて、インデックスを適切に使用する方法を知っていることを前提としています。



    1. java.lang.OutOfMemoryError:SqliteAndroidからデータを読み取っているときに[メモリが使い果たされました]

    2. PHP、MySQL、PDOトランザクション-tryブロック内のコードはcommit()で停止しますか?

    3. MariaDB JSON_INSERT()の説明

    4. Laravel Eloquentが管理するタイムスタンプ(created_atおよびupdated_at)のタイムゾーンを更新するにはどうすればよいですか?