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

MySQL Apakah ada batasan untuk InnerJoin?

Anda tidak memiliki batas GABUNG untuk MySQL. Jumlah Anda bergabung tidak buruk. Namun, bergabung pada tabel turunan (subquery dalam) seperti yang Anda lakukan dapat menyebabkan masalah kinerja, karena tabel turunan tidak memiliki indeks. Melakukan penggabungan pada tabel turunan tanpa indeks bisa jadi lambat.

Anda harus mempertimbangkan untuk membuat tabel sementara yang nyata dengan indeks untuk bergabung, atau mencari cara untuk menghindari subquery.

GABUNG di MySQL pada dasarnya seperti melakukan pencarian (seek) untuk setiap baris yang digabungkan. Jadi, MySQL harus melakukan banyak pencarian jika Anda menggabungkan banyak record. Ini bukan tentang berapa banyak tabel yang Anda gabungkan daripada jumlah baris yang Anda ikuti yang bisa menjadi masalah.

Bagaimanapun, MySQL hanya akan melakukan begitu banyak pencarian sebelum menyerah dan hanya membaca seluruh tabel. Ia melakukan pekerjaan yang cukup baik dalam memutuskan mana yang akan lebih murah.

Mungkin hal terbaik yang dapat Anda lakukan adalah membantunya menebak dengan memperbarui statistik indeks dengan ANALYZE TABLE.

Anda dapat memiliki satu klausa WHERE per SELECT. Jadi subquery dalam Anda akan memiliki klausa WHERE dan kueri luar Anda akan memiliki klausa WHERE, dan ini diterapkan setelah JOIN (setidaknya secara logika, meskipun MySQL umumnya akan menerapkannya terlebih dahulu untuk performa).

Selain itu, semua ini dengan asumsi Anda tahu cara menggunakan indeks dengan benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencampur ANSI 1992 JOIN dan COMMA dalam kueri

  2. menghapus entitas dalam kaskade yang tidak berfungsi dalam relasi ManyToMany

  3. Menghubungkan ke database MySQL

  4. Tidak dapat menghentikan MySQL di OS X 10.10

  5. Bagaimana cara menyimpan URL di MySQL