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

Rozdíl ve výkonu v dotazu mezi cmd a workbench mysql

Na základě plánu Explain není optimalizátor schopen použít žádný index pro ORDER BY rent . Zkuste tedy následující:

  1. Ujistěte se, že k datu rent_date existuje index ve sloupci rents stůl. Tento index bude použit k optimalizaci ORDER BY doložka. Může to být index s jedním sloupcem nebo index s více sloupci (používá se v jiných scénářích). V případě vícesloupcového však musíte zajistit, aby rent sloupec je první sloupec v pořadí indexu.
  2. Ujistěte se, že na id existuje index ve sloupci kickscooters stůl. Podrobnosti o jednosloupcovém / vícesloupcovém indexu zůstávají stejné jako v bodě #1.
  3. Ujistěte se, že na serial_number existuje index sloupec kickscooter_states_190614 stůl. Podrobnosti o jednosloupcovém / vícesloupcovém indexu zůstávají stejné jako v bodě #1.

Nyní, po zajištění těchto indexů, zkuste svůj původní dotaz. S největší pravděpodobností by měl být optimalizátor schopen optimalizovat objednávku spojení. Kromě toho, výše uvedený dotaz, můžete vynutit pořadí připojení pomocí STRAIGHT_JOIN tip na optimalizaci. Zkuste tedy také následující dotaz a porovnejte mezi nimi:

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. Hostitel se nemůže připojit k tomuto serveru MySQL pro aplikaci klient-server

  2. Skupiny dostupnosti SQL Server AlwaysOn:Instalace a konfigurace, část 2

  3. tabulka mySQL UPDATE založená na SELECT (počet) jiné tabulky

  4. Monitorování výkonu MySQL pomocí ClusterControl