Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Klauzula WHERE o dołączeniu dodająca 4 sekundy do czasu wykonania

Najbardziej prawdopodobnym wyjaśnieniem jest to, że MySQL wybiera inny plan wykonania po dodaniu tego predykatu.

Możesz porównać wynik EXPLAIN z dwóch zapytań, z tym z journey_day.day=3 orzeczenie i ten bez.

Zaryzykowałbym przypuszczenie, że MySQL wybiera inną kolejność łączenia, a MySQL decyduje się na użycie indeksu, który ma day jako wiodąca kolumna, gdy uwzględniony jest predykat. I prawdopodobnie powoduje to dostęp do znacznie większej liczby wierszy i ich sprawdzanie, lub być może MySQL generuje duży zestaw pośredni, zanim odfiltruje wiersze.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń WSZYSTKIE lub poszczególne niedrukowalne znaki z kolumny w mysql

  2. Jak działa funkcja UPPER() w MySQL

  3. MySQL:Odmowa dostępu dla użytkownika 'user'@'IP_ADDRESS' — Zdalny dostęp dozwolony dla niektórych hostów nie działa dla innych hostów

  4. MySQL 'Obcięta niepoprawna wartość INTEGER'

  5. PHP array_intersect lub in_array, a następnie MYSQL