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

Ydeevneforskel i forespørgsel mellem cmd og workbench mysql

Baseret på Explain-planen er optimizer ikke i stand til at bruge noget indeks til ORDER BY rent . Så prøv følgende:

  1. Sørg for, at der findes et indeks på rent_date kolonne i rents bord. Dette indeks vil blive brugt til at optimere ORDER BY klausul. Det kan være et enkelt kolonneindeks eller et flerkolonneindeks (bruges i andre scenarier). Men i tilfælde af en flerkolonne, skal du sikre dig, at rent kolonne er den første kolonne i indeksrækkefølgen.
  2. Sørg for, at der findes et indeks på id kolonne af kickscooters bord. Detaljer om enkelt-kolonne/flerkolonneindeks forbliver de samme som i punkt #1.
  3. Sørg for, at der findes et indeks på serial_number kolonne i kickscooter_states_190614 bord. Detaljer om enkelt-kolonne/flerkolonneindeks forbliver de samme som i punkt #1.

Nu, efter at have sikret disse indekser, prøv din oprindelige forespørgsel. Mest sandsynligt burde optimizer være i stand til at optimere Join Order. Derudover, ovenstående forespørgsel, kan du gennemtvinge deltagelsesordre ved at bruge STRAIGHT_JOIN optimeringstip. Så prøv også følgende forespørgsel, og benchmark mellem de to af dem:

select
  r.user_id,
  k.id as kickscooter_id,
  st_astext(k.location) as location,
  k.created_at,
  k.serial_number,
  k_st.serial_number as states_serial_number,
  st_astext(k_st.gps) as gps_location,
  k_st.gps_updated_at,
  r.start_time,
  r.end_time
from kickscooters k
straight_join rents r
  on k.id= r.kickscooter_id
straight_join kickscooter_states_190614 k_st
  on k.serial_number = k_st.serial_number
order by r.rent_date
limit 999;


  1. Hvordan finder man de dårligst ydende forespørgsler i SQL Server 2008?

  2. Hvordan kan jeg indsætte binære fildata i et binært SQL-felt ved hjælp af en simpel insert-sætning?

  3. Hvad er en relationel database?

  4. MySQL-forespørgsel for at få WooCommerce-produkter efter kategorinavn