Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana melakukan persimpangan pada tabel komposisi

Dalam hal kinerja, kueri Anda terlihat OK. Sudahkah Anda mengukurnya untuk melihat apakah memang ada masalah?

Jika (object1_id, object2_id) unik maka Anda dapat menulis kueri lebih ringkas sebagai berikut:

SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(*) = 6

Perhatikan bahwa 6 adalah jumlah ID yang diberikan. Ini harus diubah jika nomor ID yang berbeda disediakan. Anda harus mengukur kinerja sebenarnya pada data Anda untuk melihat apakah ini memberikan peningkatan kecepatan.

Jika Anda tidak dapat mengasumsikan keunikan maka ini akan berhasil:

SELECT object1_id
FROM composition
WHERE object2_id IN (id1, id2, ..., id6)
GROUP BY object1_id
HAVING COUNT(DISTINCT object2_id) = 6

Namun yang paling penting adalah memastikan Anda memiliki indeks yang sesuai di meja Anda! Ini jauh lebih penting daripada apakah Anda menulis satu kueri atau yang lain.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memperbaiki Penyedia tidak kompatibel dengan versi klien Oracle?

  2. Temukan kunci asing yang cocok dengan beberapa nilai baris

  3. Fungsi panggilan VBA melalui VBA dan ADO

  4. Menemukan 'lari' baris dari kumpulan hasil yang dipesan

  5. Bagaimana cara membuat tabel dengan batasan saat menarik data dari tabel lain?