mysql における存在と in の違いは次のとおりです: 1. in は外部テーブルと内部テーブルの間のハッシュ接続であり、内部テーブルが最初にクエリされます; 2.exists は外部テーブルのループです、その後、内部テーブルがクエリされます ; 3. 外部テーブルが大きい場合は、exit を使用する方が高速であり、内部テーブルが大きい場合は、exist を使用する方が高速です。
mysql における存在と in の違いは次のとおりです:
#对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大 select * from A where exists (select * from B where A.id=B.id);
#对A查询涉及id,使用索引,故A表效率高,可用大表 -->外大内小 select * from A where A.id in (select id from B);
(1) 存在することは外観をループすることですループがループするたびに内部テーブル (サブクエリ) がクエリされます。内部テーブルのクエリはインデックスを使用するため (内部テーブルは効率が高いため、大きなテーブルを使用できます)、外部テーブルはどんなに大きくても走査されるのは避けられないので (小さなテーブルを使用するようにしてください)、内部テーブルが大きい場合は、exists を使用して効率を向上させます。
(2) は、外部テーブルと内部テーブルを使用し、最初に内部テーブルをクエリし、次に内部テーブルの結果を外部テーブルと照合し、外部サーフェスのインデックスを使用します (外部サーフェスは効率が高く、大きなテーブルで使用できます)。内部テーブルがどんなに大きくてもクエリを実行する必要があるため、大きな外部テーブルに in を使用すると効率が向上します。
(3) クエリされる 2 つのテーブルが同じサイズの場合、in とexists の使用に大きな違いはありません。 2 つのテーブルのうちの 1 つが小さく、もう 1 つが大きいテーブルの場合、大きいサブクエリ テーブルには存在し、小さいサブクエリ テーブルには in が使用されます。
以上がmysql に存在する と 存在する はどう違いますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。