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

Apakah klausa MySQL IN mengeksekusi subquery beberapa kali?

Asumsi Anda salah; subquery akan dieksekusi hanya sekali. Alasan mengapa lebih lambat daripada bergabung adalah karena IN tidak dapat memanfaatkan indeks; ia harus memindai argumennya sekali untuk setiap kali WHERE klausa dievaluasi, yaitu, sekali per baris dalam tabelA. Anda dapat mengoptimalkan kueri, tanpa menggunakan variabel atau prosedur tersimpan, cukup dengan mengganti IN dengan bergabung, jadi:

SELECT tableA.field1, tableA.field2, [...]
FROM tableA 
  INNER JOIN tableB ON tableA.id = tableB.id

Kecuali Anda tidak keberatan mendapatkan kembali setiap bidang dari kedua tabel, Anda perlu menghitung bidang yang Anda inginkan di SELECT ayat; tableA.* , misalnya, akan menimbulkan kesalahan sintaks.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Git untuk melacak skema mysql - beberapa pertanyaan

  2. Bagaimana Cara Memilih Bidang Tertentu di Laravel Eloquent?

  3. Cara Menghubungkan ke Database MySQL atau MariaDB

  4. Cara memilih tanggal terlama dari MySQL

  5. Bagaimana cara memasukkan karakter utf-8 mb4 (emoji di ios5) di mysql?