sql >> Database >  >> RDS >> Mysql

Hoe goed geïndexeerde MySQL-tabellen effectief samen te voegen?

OK, ik heb dit getest op meer dan 30.000 records per tafel en het werkt verdomd snel.

Zoals het er nu uitziet, voer je momenteel een join uit op twee enorme tafels, maar als je eerst zoekt naar overeenkomsten op 'val' op elke tafel, zal dat de grootte van je join-sets aanzienlijk verkleinen.

Ik heb dit antwoord oorspronkelijk gepost als een reeks subquery's, maar ik realiseerde me niet dat MySQL pijnlijk traag is bij geneste subquery's, omdat het van buiten naar binnen wordt uitgevoerd. Als u de subquery's echter definieert als weergaven, worden ze van binnenuit uitgevoerd.

Maak dus eerst de weergaven.

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

Voer vervolgens de query uit.

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

Bliksem.



  1. Hulp nodig bij berekening met behulp van twee datasets met Expression SSRS

  2. Hoe weet ik of mijn PostgreSQL-back-up goed is?

  3. Voert de MySQL IN-component de subquery meerdere keren uit?

  4. Een willekeurig getal genereren binnen een opgegeven bereik in SQLite