sql >> Database teknologi >  >> RDS >> Mysql

Hvordan man får godt indekserede MySQL-tabeller til at slutte sig effektivt

OK, jeg har testet dette på 30.000+ poster pr. bord, og det kører ret hurtigt.

Som det ser ud i øjeblikket udfører du en join på to massive borde i øjeblikket, men hvis du først scanner efter match på 'val' på hvert bord, vil det reducere størrelsen af ​​dine join-sæt betydeligt.

Jeg postede oprindeligt dette svar som et sæt underforespørgsler, men jeg var ikke klar over, at MySQL er smerteligt langsom ved indlejrede underforespørgsler, da det udføres udefra og ind. Men hvis du definerer underforespørgslerne som visninger, kører det dem indefra og ud.

Så opret først visningerne.

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

Kør derefter forespørgslen.

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

Lyn.



  1. Dynamisk oprettelse af kolonner fra rækkedata ved hjælp af Vælg i Bigquery

  2. PDO lastInsertId virker ikke på transaktioner?

  3. Postgresql-kolonnen blev ikke fundet, men vises i beskrivelsen

  4. DBMS_JOB vs DBMS_SCHEDULER