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

Kiedy używać STRAIGHT_JOIN z MySQL

Nie polecałbym używania STRAIGHT_JOIN bez ważnego powodu. Z mojego własnego doświadczenia wynika, że ​​optymalizator zapytań MySQL wybiera kiepski plan zapytań częściej niż bym chciał, ale nie na tyle często, że powinieneś go po prostu ominąć, co byś zrobił, gdybyś zawsze używał STRAIGHT_JOIN.

Moją rekomendacją jest pozostawienie wszystkich zapytań jako zwykłych JOIN. Jeśli odkryjesz, że jedno zapytanie korzysta z nieoptymalnego planu zapytań, sugerowałbym najpierw spróbować przepisać lub zmienić strukturę zapytania, aby sprawdzić, czy optymalizator wybierze lepszy plan zapytań. Ponadto, przynajmniej w przypadku innodb, upewnij się, że nie chodzi tylko o to, że statystyki indeksu są nieaktualne (ANALIZA TABELĘ ). Może to spowodować, że optymalizator wybierze kiepski plan zapytania. Wskazówki dotyczące Optymalizatora powinny być na ogół ostatnią deską ratunku.

Innym powodem, dla którego nie należy używać podpowiedzi dotyczących zapytań, jest to, że dystrybucja danych może się zmieniać w czasie lub selektywność indeksu może się zmieniać w miarę powiększania się tabeli. Podpowiedzi dotyczące zapytań, które są obecnie optymalne, mogą z czasem stać się nieoptymalne. Jednak optymalizator nie będzie w stanie dostosować planu zapytania z powodu nieaktualnych wskazówek. Pozostajesz bardziej elastyczny, jeśli pozwolisz optymalizatorowi na podejmowanie decyzji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_VALID() – Testuj poprawność JSON w MySQL

  2. Jak zabezpieczyć klaster Galera — 8 wskazówek

  3. Najlepsze praktyki dotyczące tworzenia indeksów w tabelach MySQL — kompilacja indeksu kroczącego

  4. mySQL ::wstawić do tabeli, dane z innej tabeli?

  5. MySQL – funkcje ELT() i FILED() do wyodrębniania pozycji indeksu z listy