RDBM modern, termasuk Oracle, mengoptimalkan sebagian besar gabungan dan subkueri hingga ke rencana eksekusi yang sama.
Oleh karena itu, saya akan melanjutkan dan menulis kueri Anda dengan cara yang paling sederhana untuk Anda dan fokus untuk memastikan bahwa Anda telah mengoptimalkan indeks Anda sepenuhnya.
Jika Anda memberikan kueri akhir dan skema database Anda, kami mungkin dapat menawarkan saran mendetail, termasuk informasi mengenai potensi masalah penguncian.
Sunting
Berikut ini beberapa kiat umum yang berlaku untuk kueri Anda:
- Untuk bergabung, pastikan Anda memiliki indeks pada kolom tempat Anda bergabung. Pastikan untuk menerapkan indeks ke kolom gabungan di kedua tabel. Anda mungkin berpikir bahwa Anda hanya memerlukan indeks dalam satu arah, tetapi Anda harus mengindeks keduanya, karena terkadang database menentukan bahwa lebih baik bergabung ke arah yang berlawanan.
- Untuk klausa WHERE, pastikan Anda memiliki indeks pada kolom yang disebutkan di WHERE.
- Untuk menyisipkan banyak baris, sebaiknya Anda menyisipkan semuanya dalam satu kueri.
- Untuk menyisipkan pada tabel dengan indeks berkerumun, sebaiknya Anda menyisipkan dengan nilai tambahan untuk indeks berkerumun sehingga baris baru ditambahkan ke akhir data. Ini menghindari pembuatan ulang indeks dan sering kali menghindari penguncian pada rekaman yang ada, yang akan memperlambat kueri SELECT terhadap baris yang ada. Pada dasarnya, penyisipan menjadi tidak terlalu menyakitkan bagi pengguna sistem lainnya.