全部产品
Search
文档中心

PolarDB:Petunjuk OPT_PARAM

更新时间:Jul 02, 2025

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;