sql >> Databáze >  >> RDS >> Mysql

Jednoduchý výběrový dotaz MySQL je pomalý

Se 110 miliony záznamů si nedovedu představit, že existuje mnoho záznamů s dotyčným ID stopy. Měl bych indexy jako

(trackID1, sim )
(trackID2, sim )
(tracksimID, sim)

a proveďte PREQUERY přes unii a připojte se proti tomuto výsledku

select STRAIGHT_JOIN
      TS2.*
   from
      ( select ts.tracksimID
           from tracksim ts
           where ts.trackID1 = 168123
             and ts.sim > 0.5
        UNION
        select ts.trackSimID
           from tracksim ts
           where ts.trackid2 = 168123
             and ts.sim > 0.5 
      ) PreQuery
      JOIN TrackSim TS2
         on PreQuery.TrackSimID = TS2.TrackSimID
   order by
      TS2.SIM DESC
   LIMIT 0, 100


  1. IF NOT EXISTS na spouštěči

  2. Jak znovu synchronizovat Mysql DB, pokud mají Master a slave jinou databázi zapouzdřit replikaci Mysql?

  3. Jak omezit zahrnutí v přidružení includeToMany v Sequelize JS?

  4. Jak nahradit NULL jinou hodnotou v SQL Server – ISNULL()