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

Klauzule WHERE při spojení přidává 4 sekundy k času provedení

Nejpravděpodobnějším vysvětlením je, že MySQL volí jiný plán provádění, když přidáte tento predikát.

Můžete porovnat výstup EXPLAIN dvou dotazů, jednoho s journey_day.day=3 predikát a ten bez.

Troufám si odhadnout, že MySQL volí jiné pořadí připojení a MySQL se rozhodlo použít index, který má day jako úvodní sloupec, když je zahrnut predikát. A pravděpodobně to způsobuje, že je přístup a zkoumání mnohem více řádků, nebo možná MySQL generuje velkou přechodnou sadu, než řádky odfiltruje.



  1. Zjednodušte vnořený příkaz case when

  2. Klauzule OVER v Oracle

  3. 2 způsoby, jak vrátit řádky, které obsahují pouze nealfanumerické znaky v Oracle

  4. Může mít stejný sloupec omezení primárního klíče a cizího klíče na jiný sloupec