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

Kapan menggunakan petunjuk dalam kueri Oracle

Sebagian besar petunjuk adalah cara untuk mengkomunikasikan maksud kita kepada pengoptimal. Misalnya, leading petunjuk yang Anda sebutkan berarti bergabung dengan tabel dalam urutan ini . Mengapa ini perlu? Seringkali karena urutan bergabung yang optimal tidak jelas, karena kueri ditulis dengan buruk atau statistik basis data tidak akurat.

Jadi salah satu penggunaan petunjuk seperti leading adalah mencari tahu jalur eksekusi terbaik, lalu mencari tahu mengapa database tidak memilih rencana itu tanpa petunjuk. Apakah mengumpulkan statistik baru memecahkan masalah? Apakah menulis ulang klausa FROM menyelesaikan masalah? Jika demikian, kita dapat menghapus petunjuk dan menerapkan SQL telanjang.

Beberapa kali ada saat di mana kita tidak bisa menyelesaikan teka-teki ini, dan harus menyimpan petunjuk di Produksi. Namun ini harus menjadi pengecualian langka. Oracle memiliki banyak orang yang sangat pintar yang mengerjakan Pengoptimal Berbasis Biaya selama bertahun-tahun, jadi keputusannya biasanya lebih baik daripada keputusan kami.

Tetapi ada petunjuk lain yang tidak akan kami lihat di Production. append sering penting untuk menyetel sisipan massal. driving_site dapat menjadi vital dalam menyetel kueri terdistribusi.

Sebaliknya petunjuk lain hampir selalu disalahgunakan. Ya parallel , aku sedang membicarakanmu. Secara membabi buta menempatkan /*+ parallel (t23, 16) */ mungkin tidak akan membuat kueri Anda berjalan enam belas kali lebih cepat, dan tidak jarang akan menghasilkan lebih lambat pengambilan daripada eksekusi utas tunggal.

Jadi, singkatnya, tidak ada saran yang berlaku secara universal kapan kita harus menggunakan petunjuk. Kuncinya adalah:

  1. memahami cara kerja database, dan khususnya cara kerja pengoptimal berbasis biaya;
  2. pahami apa yang dilakukan setiap petunjuk;
  3. menguji kueri petunjuk dalam lingkungan penyetelan yang tepat dengan data yang setara dengan Produksi.

Jelas tempat terbaik untuk memulai adalah dokumentasi Oracle . Namun, jika Anda ingin mengeluarkan uang, buku Jonathan Lewis tentang Pengoptimal Berbasis Biaya adalah investasi terbaik yang bisa Anda lakukan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kolom tidak diizinkan di sini kesalahan dalam pernyataan INSERT

  2. Menghitung jam layanan yang berlalu untuk tiket terbuka (Oracle SQL)

  3. 2 Cara Memformat Angka dengan Nol Awal di Oracle

  4. ORA-12638:Pengambilan kredensial gagal

  5. 12c VARCHAR2(32767)