ホームページ  >  記事  >  データベース  >  mysql に存在する と 存在する はどう違いますか?

mysql に存在する と 存在する はどう違いますか?

清浅
清浅オリジナル
2019-05-07 10:20:3924875ブラウズ

mysql における存在と in の違いは次のとおりです: 1. in は外部テーブルと内部テーブルの間のハッシュ接続であり、内部テーブルが最初にクエリされます; 2.exists は外部テーブルのループです、その後、内部テーブルがクエリされます ; 3. 外部テーブルが大きい場合は、exit を使用する方が高速であり、内部テーブルが大きい場合は、exist を使用する方が高速です。

mysql に存在する と 存在する はどう違いますか?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。