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

適切にインデックス付けされたMySQLテーブルを効果的に結合する方法

    OK私はこれをテーブルごとに30,000以上のレコードでテストしましたが、非常に高速に実行されます。

    現在のところ、現在2つの大規模なテーブルで結合を実行していますが、最初に各テーブルの「val」で一致をスキャンすると、結合セットのサイズが大幅に削減されます。

    私はもともとこの回答を一連のサブクエリとして投稿しましたが、MySQLは外部から実行されるため、ネストされたサブクエリで非常に遅いことに気づきませんでした。ただし、サブクエリをビューとして定義すると、内部から実行されます。

    したがって、最初にビューを作成します。

    CREATE VIEW tbl1_iii AS (
    SELECT * FROM tbl1 WHERE val='iii'
    );
    CREATE VIEW tbl2_iii AS (
    SELECT * FROM tbl2 WHERE val='iii'
    );
    

    次に、クエリを実行します。

    SELECT tbl1_iii.id from tbl1_iii,tbl2_iii
    WHERE tbl1_iii.id = tbl2_iii.id;
    

    稲妻。



    1. mysqlタイムスタンプ列

    2. フォームウィザードを使用してフォームを作成する方法

    3. MySqlは、制限を使用せずに次に小さい番号を選択します

    4. 12一般的に使用されるSQL演算子