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;
稲妻。