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

Jak mogę zoptymalizować to zapytanie, wykonanie zajmuje więcej niż minutę

Planista najprawdopodobniej nie korzysta z limit wskazówka, aby wyeliminować wiersze z tabeli zamówień przed sprzężeniem. Dlatego serwer musi wykonać połączenie dla wszystkich wierszy, a następnie zwrócić tylko kilka.

Spróbuj tego:

select o.* from
(select * order order by id desc limit 100) o
inner join product p 
on o.product_id=p.id 
inner join person per 
on o.person_id=per.id 
order by o.id desc limit 100;

EDYCJA:będzie działać tylko wtedy, gdy istnieje ograniczenie gwarantujące, że odpowiednie wiersze są obecne w tabelach Produkt i Osoba.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj datę mySQL na datę JavaScript

  2. Czy istnieje odpowiednik MySQL do typu zestawu w Pythonie?

  3. Uzyskaj wyniki zapytania MySQL jako ich natywny typ danych?

  4. Pop ostatni element w tablicy JSON w MySQL 5.7

  5. mongoDB vs mySQL — dlaczego pod pewnymi względami jeden jest lepszy od drugiego