Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо STRAIGHT_JOIN подобрява толкова драстично тази заявка и какво означава това, когато е написано след ключовата дума SELECT?

STRAIGHT_JOIN принуждава реда на присъединяване на таблиците, така че table1 се сканира във външния цикъл и table2 във вътрешния контур.

Оптимизаторът не е перфектен (макар и доста приличен), а най-вероятната причина е остарялата статистика.

Не, само когато оптимизаторът е грешен. Това може да е, ако разпределението на данните ви е силно изкривено или не може да бъде изчислено правилно (да речем, за пространствени или пълнотекстови индекси).

Трябва да съберете статистическите данни, да изградите плановете и за двата начина и да разберете какво означават тези планове.

Ако видите това:

  1. Автоматично генерираният план не е оптимален и не може да бъде подобрен по стандартните начини,

  2. STRAIGHT_JOIN версията е по-добра, разбирате, че винаги ще бъде и разбирате защо винаги ще бъде

, след което използвайте STRAIGHT_JOIN .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на ScrollableResults на Hibernate за бавно четене на 90 милиона записа

  2. Node.js синхронно обикаля или итерира асинхронни изрази

  3. Импортирайте голям MySQL .sql файл в Windows със сила

  4. Команди за архивиране и възстановяване на MySQL за администриране на база данни

  5. В какъв ред се обработват ограниченията ON DELETE CASCADE?