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

内部参加vsどこ

    いいえ!同じ実行プランで、次の2つのテーブルを見てください。

    CREATE TABLE table1 (
      id INT,
      name VARCHAR(20)
    );
    
    CREATE TABLE table2 (
      id INT,
      name VARCHAR(20)
    );
    

    内部結合を使用したクエリの実行プラン:

    -- with inner join
    
    EXPLAIN PLAN FOR
    SELECT * FROM table1 t1
    INNER JOIN table2 t2 ON t1.id = t2.id;
    
    SELECT *
    FROM TABLE (DBMS_XPLAN.DISPLAY);
    
    -- 0 select statement
    -- 1 hash join (access("T1"."ID"="T2"."ID"))
    -- 2 table access full table1
    -- 3 table access full table2
    

    そして、WHERE句を使用したクエリの実行プラン。

    -- with where clause
    
    EXPLAIN PLAN FOR
    SELECT * FROM table1 t1, table2 t2
    WHERE t1.id = t2.id;
    
    SELECT *
    FROM TABLE (DBMS_XPLAN.DISPLAY);
    
    -- 0 select statement
    -- 1 hash join (access("T1"."ID"="T2"."ID"))
    -- 2 table access full table1
    -- 3 table access full table2
    


    1. SQLServerのすべてのサーバートリガーのリストを返す

    2. ループのないセットまたはシーケンスを生成する–パート2

    3. SQLクエリからカウントを取得する

    4. SQLite COUNT