Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Memesan dan Mengehadkan Keputusan dengan Cekap daripada Fungsi Jadual PostgreSQL?

Bagaimana untuk Memesan dan Mengehadkan Keputusan dengan Cekap daripada Fungsi Jadual PostgreSQL?

Barbara Streisand
Lepaskan: 2025-01-05 02:33:40
asal
619 orang telah melayarinya

How to Efficiently Order and Limit Results from a PostgreSQL Table Function?

Pemesanan Berparameter PostgreSQL dan Mengehadkan dalam Fungsi Jadual

Soalan:

Bagaimana seseorang boleh memesan dan mengehadkan hasil dengan cekap apabila menggunakan fungsi jadual SQL seperti getStuff? Memesan dan mengehadkan di luar fungsi atau menggunakan plpgsql sedang dipertimbangkan. Adakah terdapat pendekatan yang lebih baik?

Jawapan:

Walaupun penampilan awalnya, fungsi plpgsql ialah pilihan pilihan untuk mengendalikan senario yang lebih kompleks. Prestasi mungkin hanya terjejas apabila fungsi plpgsql bersarang, di mana perancang pertanyaan tidak dapat mengoptimumkan kod sepenuhnya dalam konteks pertanyaan luar.

Fungsi plpgsql dipermudahkan yang mengelakkan CASE berlebihan klausa:

CREATE OR REPLACE FUNCTION get_stuff(_param text, _orderby text, _limit int)
  RETURNS SETOF stuff AS
$func$
BEGIN
   RETURN QUERY EXECUTE '
      SELECT *
      FROM   stuff
      WHERE  col = 
      ORDER  BY ' || quote_ident(_orderby) || ' ASC
      LIMIT  '
   USING _param, _limit;
END
$func$  LANGUAGE plpgsql;
Salin selepas log masuk

Penggunaan:

SELECT * FROM get_stuff('hello', 'col2', 100);
Salin selepas log masuk

Nota:

  • Gunakan RETURN QUERY EXECUTE untuk kembalikan hasil pertanyaan dalam satu operasi.
  • Pastikan pengecam adalah kalis SQLi dengan quote_ident().
  • Gunakan USING untuk menghantar nilai parameter, menghalang penghantaran dan SQLi.
  • Elakkan menamakan konflik antara parameter dan nama lajur.
  • The fungsi awal yang disunting gagal kerana ia mengembalikan induk tetapi diisytiharkan untuk mengembalikan barangan SETOF. Sebaliknya, pertimbangkan untuk menggunakan RETURNS TABLE.

Atas ialah kandungan terperinci Bagaimana untuk Memesan dan Mengehadkan Keputusan dengan Cekap daripada Fungsi Jadual PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan