SQL ステートメント内の 3 つのキーワード: MINUS (減算)、INTERSECT (交差)、および UNION ALL (和集合)
集合の概念については、誰もが中学校で習ったはずですが、あまり持っていません。これら 3 つのキーワードは、中国語の意味と同じように、主にデータベースのクエリ結果を操作するために使用されます。2 つのクエリ、MINUS は、交差がある場合に、最初のクエリ結果から 2 番目のクエリ結果を減算することです。交差部分はその部分から減算されます。それ以外の場合、INTERSECT は 2 つのクエリ結果の交差です。UNION ALL は 2 つのクエリの結合です。 同じですが、関数は単純な SQL ステートメントで実装できますが、パフォーマンスの違いは非常に大きく、誰かが実験を行っています。made_order には合計 230,000 レコードがあり、charge_detail には合計 170,000 のレコードがあります。
SELECT order_id FROM made_order MINUS SELECT order_id FROM charge_detail 耗时:1.14 sec SELECT a.order_id FROM made_order a WHERE a.order_id NOT exists ( SELECT order_id FROM charge_detail WHERE order_id = a.order_id ) 耗时:18.19 sec
パフォーマンスの違いは次のとおりです。 15.956 回! したがって、この問題が発生した場合は、MINUS、INTERSECT、UNION ALL を使用して問題を解決することをお勧めします。サーバーは私たちに打ちのめされないでしょうか?
追伸: 2 つのアプリケーション セットの減算、交差、および追加を行う場合、次の厳しい要件があります。 1. 2 つのセットのフィールドがクリアされている必要があります (* を使用すると機能しません。エラーになります) 2. フィールドのタイプと順序は同じです (名前は異なる場合があります)。たとえば、セット 1 のフィールド 1 は NUMBER、フィールド 2 は VARCHAR、セット 2 のフィールド 1 も NUMBER である必要があります。フィールド 2 は VARCHAR である必要があります。 3. 結果を並べ替える場合は、クエリの後で並べ替えを次のように変更できます。
以上がSQL ステートメントの MINUS、INTERSECT、UNION ALL の分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。