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

Kinerja PostgreSQL - PILIH vs fungsi Tersimpan

Perencana memiliki masalah dengan kueri Anda karena tidak dapat mengevaluasi waktu eksekusi fungsi. Dalam hal ini perencana mendapatkan perkiraan biaya pelaksanaan fungsi, yang dapat didefinisikan di create function... atau alter function... . Namun, jika Anda mencoba kueri ini:

explain analyse select * from test(10);

Anda akan melihat waktu eksekusi menjadi jauh lebih realistis.

Bandingkan:

test=# explain analyse select test(1000);
                                        QUERY PLAN
------------------------------------------------------------------------------------------
 Result  (cost=0.00..5.25 rows=1000 width=0) (actual time=0.830..1.220 rows=1000 loops=1)
 Planning time: 0.038 ms
 Execution time: 1.250 ms
(3 rows)

versus:

test=# explain analyse select * from test(1000);
                                                   QUERY PLAN
----------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..37.42 rows=1000 width=4) (actual time=0.006..0.124 rows=1000 loops=1)
   ->  Seq Scan on test_table  (cost=0.00..2560.28 rows=68428 width=4) (actual time=0.005..0.102 rows=1000 loops=1)
 Planning time: 0.130 ms
 Execution time: 0.144 ms
(4 rows)


test=# explain analyse select * from test_table limit 1000;
                                                    QUERY PLAN
------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.00..37.42 rows=1000 width=269) (actual time=0.009..0.118 rows=1000 loops=1)
   ->  Seq Scan on test_table  (cost=0.00..2560.28 rows=68428 width=269) (actual time=0.008..0.097 rows=1000 loops=1)
 Planning time: 0.076 ms
 Execution time: 0.151 ms
(4 rows)

Perhatikan kesamaan dari dua rencana terakhir. Fungsi tabel (fungsi yang mengembalikan kumpulan baris atau tabel seperti dalam kasus ini) harus dipanggil dalam FROM ayat. Dalam kondisi tertentu mereka dapat digariskan.

Baca selengkapnya:Penyisipan fungsi SQL .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat menjatuhkan pengguna tabel karena objek lain bergantung padanya

  2. postgresql COUNT(DISTINCT ...) sangat lambat

  3. Cara Membuat Bilangan Ordinal di PostgreSQL

  4. Cara unpivot tabel di PostgreSQL

  5. Bagaimana cara huruf kecil array postgresql?