PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Mengapa perencana datang dengan hasil yang berbeda untuk fungsi dengan volatilitas yang berbeda?

Ini memperkirakan 1000 baris

1000 baris yang diperkirakan adalah nilai default yang didokumentasikan dalam CREATE FUNCTION :

Ketika suatu fungsi dinyatakan volatil, ia meminta untuk tidak disejajarkan, jadi nilai default untuk result_rows ini berlaku.

Di sisi lain, ketika dimasukkan ke dalam kueri seperti pada pengujian kedua Anda, jumlah baris akan diperkirakan seolah-olah badan fungsi telah dipindahkan ke kueri dan deklarasi fungsi tidak ada. Ini mengarah pada pengujian kedua ke perkiraan yang tepat sejak VALUES klausa dapat langsung dievaluasi.

Apa sebenarnya yang dilakukan perencana di sini, dan di mana saya dapat membaca beberapa dokumentasi tentangnya?

Secara umum, strategi pengoptimalan perencana tidak dijelaskan dalam dokumentasi utama. Mereka dibahas dalam milis dan disebutkan dalam komentar kode sumber, yang untungnya cenderung sangat jelas dan ditulis dengan baik (dibandingkan dengan kode sumber rata-rata). Dalam hal fungsi inlining, saya percaya komentar dari inline_set_returning_functions dan inline_set_returning_function mengungkapkan sebagian besar aturan yang mendorong pengoptimalan khusus ini. (peringatan:tautan di atas masuk ke cabang master saat ini yang dapat berubah atau melayang kapan saja).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel localhost berfungsi, tetapi heroku memberikan 500 kesalahan

  2. Lihat alias nama kolom di klausa WHERE

  3. Bagaimana cara mencari enum dalam daftar string dengan kueri postgresql?

  4. error dengan postgresql datababse :Apakah server berjalan secara lokal dan menerima koneksi pada soket domain Unix /var/run/postgresql/.s.PGSQL.5432?

  5. Apakah postgres adalah pengguna PostgreSQL default dan khusus?