ホームページ > データベース > mysql チュートリアル > テーブル B にない行をテーブル A から効率的に選択するにはどうすればよいですか?

テーブル B にない行をテーブル A から効率的に選択するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-10-26 06:02:30
オリジナル
684 人が閲覧しました

 How to Efficiently Select Rows from Table A that are Not in Table B?

テーブル B から除外されるテーブル A の行を効率的に選択する

同じ主キーを共有する 2 つのテーブル (A と B) を扱う場合、一般的なタスクは、A には存在するが B には存在しないすべての行を抽出することです。「NOT EXISTS」句の使用などの既存のソリューションでは、パフォーマンスの問題が発生する可能性があります。

効率を向上させるには、左結合アプローチ。左結合ベースのソリューションの構文は次のとおりです。

SELECT *
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
ログイン後にコピー

このアプローチでは、テーブル A の各行とテーブル B の対応する行を、共通フィールド "x" に基づいて結合することによって比較します (次のように仮定します)。それは存在します)。 "WHERE" 句が "B.y" が NULL (一致しないことを示す) である行を除外するため、テーブル B に一致する行がないテーブル A の行が返されます。

または、次の構文も使用できます。同じ結果を得るために使用できます。

SELECT A.*
FROM A
LEFT JOIN B ON A.x = B.y
WHERE B.y IS NULL;
ログイン後にコピー

この構文は、テーブル A から列のみを明示的に選択し、不要なデータが取得されないようにします。

一般に、左結合アプローチは、これは、「NOT EXISTS」句と比較して、「テーブルにない場所を選択」操作を実行する効率的な方法です。具体的なパフォーマンスの向上はデータのサイズと構造によって異なりますが、特にテーブル B の行数がテーブル A よりも大幅に少ない場合、左結合は代替結合よりもパフォーマンスが向上する傾向があります。

以上がテーブル B にない行をテーブル A から効率的に選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート