sql >> Base de Datos >  >> RDS >> Mysql

La consulta de selección simple de MySQL es lenta

Con 110 millones de registros, no puedo imaginar que haya muchas entradas con el ID de pista en cuestión. Tendría índices como

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

y haga una PREQUERY a través de la unión y únase contra ese resultado

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