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

Kueri Kinerja MySQL

Anda akan berpikir kueri ini hanya mengeksekusi subkueri satu kali, menyimpan hasilnya, lalu membandingkannya dengan baris di kueri luar. Tapi tidak demikian halnya dengan MySQL. MySQL memiliki celah dalam kecerdasan pengoptimalnya, sehingga memperlakukan subquery sebagai subquery dependen dan mengeksekusinya kembali untuk setiap nilai yang berbeda dari kueri luar.

Untuk memperbaikinya, pindahkan subquery ke dalam klausa FROM sebagai tabel turunan. Ini akan mengeksekusi subquery sekali, dan menyimpan hasilnya sebagai tabel sementara internal. Kemudian gabung ke instance tabel lainnya.

SELECT `ID`, `CountryCode`, `Name`, `District`, `Population`
FROM `City`
JOIN (
    SELECT `CountryCode`, MAX(`Population`) AS `Population`
    FROM `City`
    GROUP BY `CountryCode`
) AS _max USING (`CountryCode`, `Population`);

Anda juga harus memiliki indeks di Kota di atas dua kolom (CountryCode,Population) dalam urutan itu, sehingga kueri GROUP BY dapat berjalan secara efisien.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbandingan string UTF8 di MySQL

  2. laravel fasih mengurutkan berdasarkan hubungan

  3. penggunaan auto_increment dalam kunci komposit

  4. Kesalahan:Isi:Properti SelectCommand.Connection belum diinisialisasi.

  5. Bagaimana cara menyisipkan beberapa baris dari textareas di MySQL