Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana saya bisa mengoptimalkan kueri ini, membutuhkan lebih dari satu menit untuk mengeksekusi

Perencana, kemungkinan besar, tidak menggunakan limit petunjuk untuk menghilangkan baris dari tabel pesanan sebelum bergabung. Jadi server harus melakukan join untuk semua baris dan kemudian mengembalikan hanya beberapa.

Coba ini:

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;

EDIT:Ini hanya akan berfungsi jika ada batasan yang menjamin bahwa baris yang sesuai ada di tabel Produk dan Orang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mencadangkan Database MySQL Moodle Anda

  2. Daftar Penentu Format Tanggal MySQL

  3. Kembalikan struktur tabel dari file frm dan ibd

  4. Perbedaan antara SET autocommit=1 dan MULAI TRANSAKSI di mysql (Apakah saya melewatkan sesuatu?)

  5. perbarui baris tanpa menghapus nilai sebelumnya di mysql