Topik ini menjelaskan petunjuk OPT_PARAM dari PolarDB for PostgreSQL (Kompatibel dengan Oracle).
Anda dapat menentukan nilai parameter tertentu pada tingkat basis data, tingkat sesi, atau tingkat pengguna. Metode ini bersifat tradisional. Saat menjalankan Pernyataan SQL, Anda tidak dapat mengontrol nilai parameter tertentu untuk pernyataan tersebut. Dalam hal ini, Anda dapat menggunakan petunjuk OPT_PARAM untuk menentukan nilai parameter tertentu dalam sebuah Pernyataan SQL. Nilai-nilai ini hanya berlaku dalam Pernyataan SQL tersebut.
Sintaksis
SELECT /*+ opt_param("enable_hashjoin" "off"),
opt_param("enable_mergejoin" "off") */ ...;Parameter
Petunjuk OPT_PARAM memungkinkan Anda menentukan nilai parameter berikut:
Parameter | Deskripsi |
enable_hashjoin | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana hash-join. |
enable_mergejoin | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana merge-join. |
enable_nestloop | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan rencana join loop-nested. Join loop-nested tidak dapat sepenuhnya dilarang. Namun, jika Anda menonaktifkan parameter ini, perencana akan memprioritaskan metode lain. |
enable_bitmapscan | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana bitmap-scan. |
enable_indexonlyscan | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana index-only-scan. |
enable_indexscan | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana index-scan. |
enable_material | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan materialisasi. Materialisasi tidak dapat sepenuhnya dilarang. Namun, jika Anda menonaktifkan parameter ini, perencana tidak dapat menyisipkan node materialisasi. |
enable_seqscan | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana pemindaian sekuensial. Pemindaian sekuensial tidak dapat sepenuhnya dilarang. Namun, jika Anda menonaktifkan parameter ini, perencana akan memprioritaskan metode lain. |
enable_sort | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan langkah-langkah sortir eksplisit. Sortir eksplisit tidak dapat sepenuhnya dilarang. Namun, jika Anda menonaktifkan parameter ini, perencana akan memprioritaskan metode lain. |
enable_tidscan | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana TID scan. |
enable_gathermerge | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana gather-merge. |
enable_hashagg | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana agregasi hash. |
enable_parallel_append | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana append yang sadar paralel. |
enable_parallel_hash | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan tipe rencana hash-join untuk hash paralel. Jika rencana hash-join tidak diaktifkan, parameter ini tidak akan berpengaruh. |
enable_partition_pruning | Menentukan apakah akan mengaktifkan perencana kueri untuk menghilangkan partisi tabel terpartisi dari rencana kueri. Ini juga mengontrol kemampuan perencana kueri untuk menghasilkan rencana kueri yang memungkinkan pelaksana kueri menghapus (mengabaikan) partisi selama eksekusi kueri. |
enable_partitionwise_aggregate | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan pengelompokan atau agregasi partitionwise, yang memungkinkan pengelompokan atau agregasi pada tabel terpartisi dilakukan secara terpisah untuk setiap partisi. Jika klausa GROUP BY tidak mencakup kunci partisi, hanya agregasi parsial yang dapat dilakukan berdasarkan partisi, dan finalisasi harus dilakukan nanti. |
enable_partitionwise_join | Menentukan apakah akan mengaktifkan perencana kueri untuk menggunakan join partitionwise, yang memungkinkan join antara tabel terpartisi dilakukan dengan menggabungkan partisi yang cocok. Join partitionwise saat ini hanya berlaku ketika kondisi join mencakup semua kunci partisi, yang harus memiliki tipe data yang sama dan memiliki set partisi anak yang cocok satu-satu. |
Contoh
Jangan gunakan petunjuk OPT_PARAM:
EXPLAIN (COSTS OFF) SELECT * FROM sampletable WHERE x < 423;Gunakan petunjuk OPT_PARAM dan atur parameter enable_bitmapscan ke off untuk menonaktifkan perencana kueri menggunakan tipe rencana bitmap-scan:
EXPLAIN (COSTS OFF) SELECT /*+ opt_param("enable_bitmapscan" "off") */ * FROM sampletable WHERE x < 423;Gunakan petunjuk OPT_PARAM dan atur parameter enable_mergejoin ke off untuk menonaktifkan perencana kueri menggunakan tipe rencana merge-join:
EXPLAIN (COSTS OFF) SELECT /*+ opt_param("enable_mergejoin" "off") */ tt1.*, tt2.* FROM tt1 JOIN tt2 on tt1.joincol = tt2.joincol;Gunakan petunjuk OPT_PARAM dan atur parameter enable_hashjoin ke on untuk mengaktifkan perencana kueri menggunakan tipe rencana hash-join:
EXPLAIN (COSTS OFF) SELECT/*+ opt_param("enable_hashjoin" "on") */ tt1.*, tt2.* FROM tt1 JOIN tt2 on tt1.joincol = tt2.joincol;