sql >> Databasteknik >  >> RDS >> Mysql

WHERE-klausul om join lägger till 4 sekunder till exekveringstiden

Den mest troliga förklaringen är att MySQL väljer en annan exekveringsplan när du lägger till det predikatet.

Du kan jämföra EXPLAIN-utdata från de två frågorna, den med journey_day.day=3 predikat och det utan.

Jag skulle våga gissa att MySQL väljer en annan kopplingsordning, och MySQL väljer att använda ett index som har day som en ledande kolumn när predikatet ingår. Och troligtvis gör det att många fler rader nås och granskas, eller så genererar MySQL en stor mellanuppsättning innan den filtrerar bort rader.



  1. MySQL, ORDER BY insertion order, inga sorteringskolumner

  2. Finns det något sätt för PHP att validera en SQL-syntax utan att köra den?

  3. En till många relation mellan AspNetUsers (Identity) och en anpassad tabell

  4. MariaDB JSON_VALUE() Förklarad