View a markdown version of this page

Menggunakan dukungan pernyataan yang disiapkan - Amazon Redshift

Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting blog yang diterbitkan pada 30 Juni 2025.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menggunakan dukungan pernyataan yang disiapkan

Driver Amazon Redshift JDBC mendukung pernyataan yang disiapkan. Anda dapat menggunakan pernyataan yang disiapkan untuk meningkatkan kinerja kueri berparameter yang perlu dijalankan beberapa kali selama koneksi yang sama.

Per nyataan yang disiapkan adalah pernyataan SQL yang dikompilasi di sisi server tetapi tidak segera dijalankan. Pernyataan yang dikompilasi disimpan di server sebagai PreparedStatement objek sampai Anda menutup objek atau koneksi. Sementara objek itu ada, Anda dapat menjalankan pernyataan yang disiapkan sebanyak yang diperlukan menggunakan nilai parameter yang berbeda, tanpa harus mengkompilasi pernyataan lagi. Pengurangan overhead ini memungkinkan kumpulan kueri dijalankan lebih cepat.

Untuk informasi selengkapnya tentang pernyataan yang disiapkan, lihat “Menggunakan Pernyataan Siap” dalam tutorial Dasar-Das ar JDBC dari Oracle.

Anda dapat menyiapkan pernyataan yang berisi beberapa kueri. Misalnya, pernyataan yang disiapkan berikut berisi dua kueri INSERT:

PreparedStatement pstmt = conn.prepareStatement("INSERT INTO MyTable VALUES (1, 'abc'); INSERT INTO CompanyTable VALUES (1, 'abc');");

Berhati-hatilah agar kueri ini tidak bergantung pada hasil kueri lain yang ditentukan dalam pernyataan yang disiapkan yang sama. Karena kueri tidak dijalankan selama langkah persiapan, hasilnya belum dikembalikan, dan tidak tersedia untuk kueri lain dalam pernyataan siap yang sama.

Misalnya, pernyataan siap berikut, yang membuat tabel dan kemudian menyisipkan nilai ke dalam tabel yang baru dibuat, tidak diperbolehkan:

PreparedStatement pstmt = conn.prepareStatement("CREATE TABLE MyTable(col1 int, col2 varchar); INSERT INTO myTable VALUES (1, 'abc');");

Jika Anda mencoba menyiapkan pernyataan ini, server mengembalikan kesalahan yang menyatakan bahwa tabel tujuan (myTable) belum ada. Kueri CREATE harus dijalankan sebelum query INSERT dapat disiapkan.