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

Postgres UNTUK LOOP

Prosedur elemen seperti loop bukan bagian dari bahasa SQL dan hanya dapat digunakan di dalam isi fungsi bahasa prosedural, prosedur (Postgres 11 atau yang lebih baru) atau DO pernyataan, di mana elemen tambahan tersebut didefinisikan oleh bahasa prosedural masing-masing. Standarnya adalah PL/pgSQL, tetapi ada yang lain.

Contoh dengan plpgsql:

DO
$do$
BEGIN 
   FOR i IN 1..25 LOOP
      INSERT INTO playtime.meta_random_sample
         (col_i, col_id)                       -- declare target columns!
      SELECT  i,     id
      FROM   tbl
      ORDER  BY random()
      LIMIT  15000;
   END LOOP;
END
$do$;

Untuk banyak tugas yang dapat diselesaikan dengan loop, ada berbasis set yang lebih pendek dan lebih cepat solusi di tikungan. Setara dengan SQL murni untuk contoh Anda:

INSERT INTO playtime.meta_random_sample (col_i, col_id)
SELECT t.*
FROM   generate_series(1,25) i
CROSS  JOIN LATERAL (
   SELECT i, id
   FROM   tbl
   ORDER  BY random()
   LIMIT  15000
   ) t;

Tentang generate_series() :

  • Apa perilaku yang diharapkan untuk beberapa fungsi pengembalian-set dalam klausa SELECT?

Tentang mengoptimalkan kinerja pilihan acak:

  • Cara terbaik untuk memilih baris acak PostgreSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menyebarkan PostgreSQL untuk Ketersediaan Tinggi

  2. Lembar Cheat Konfigurasi PostgreSQL

  3. Transfer data antar database dengan PostgreSQL

  4. Bagaimana current_date Bekerja di PostgreSQL

  5. Contoh Tabel dan Metode Lain untuk Mendapatkan Tuple Acak