Bagikan melalui


Eksekusi Langsung

Berlaku untuk: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Eksekusi langsung adalah cara paling mendasar untuk menjalankan pernyataan. Aplikasi membangun string karakter yang berisi pernyataan Transact-SQL dan mengirimkannya untuk eksekusi menggunakan fungsi SQLExecDirect . Ketika pernyataan mencapai server, SQL Server mengkompilasinya ke dalam rencana eksekusi dan kemudian segera menjalankan rencana eksekusi.

Eksekusi langsung umumnya digunakan oleh aplikasi yang membangun dan menjalankan pernyataan pada waktu proses dan merupakan metode paling efisien untuk pernyataan yang akan dijalankan satu kali. Kelemahannya dengan banyak database adalah bahwa pernyataan SQL harus diurai dan dikompilasi setiap kali dijalankan, yang menambahkan overhead jika pernyataan dijalankan beberapa kali.

SQL Server secara signifikan meningkatkan performa eksekusi langsung pernyataan yang umum dijalankan di lingkungan multipengguna dan menggunakan SQLExecDirect dengan penanda parameter untuk pernyataan SQL yang umum dijalankan dapat mendekati efisiensi eksekusi yang disiapkan.

Saat terhubung ke instans SQL Server, driver ODBC SQL Server Native Client menggunakan sp_executesql untuk mengirimkan pernyataan SQL atau batch yang ditentukan pada SQLExecDirect. SQL Server memiliki logika untuk dengan cepat menentukan apakah pernyataan atau batch SQL yang dijalankan dengan sp_executesql cocok dengan pernyataan atau batch yang menghasilkan rencana eksekusi yang sudah ada dalam memori. Jika kecocokan dibuat, SQL Server hanya menggunakan kembali paket yang ada daripada mengkompilasi paket baru. Ini berarti bahwa pernyataan SQL yang umum dijalankan dijalankan dengan SQLExecDirect dalam sistem dengan banyak pengguna akan mendapat manfaat dari banyak manfaat penggunaan kembali paket yang hanya tersedia untuk prosedur tersimpan di versi SQL Server sebelumnya.

Manfaat menggunakan kembali rencana eksekusi ini hanya berfungsi ketika beberapa pengguna menjalankan pernyataan atau batch SQL yang sama. Ikuti konvensi pengkodean ini untuk meningkatkan probabilitas bahwa pernyataan SQL yang dijalankan oleh klien yang berbeda cukup mirip untuk dapat menggunakan kembali rencana eksekusi:

  • Jangan sertakan konstanta data dalam pernyataan SQL; sebagai gantinya, gunakan penanda parameter yang terikat ke variabel program. Untuk informasi selengkapnya, lihat Menggunakan Parameter Pernyataan.

  • Gunakan nama objek yang sepenuhnya memenuhi syarat. Rencana eksekusi tidak digunakan kembali jika nama objek tidak memenuhi syarat.

  • Memiliki koneksi aplikasi semungkin mungkin menggunakan sekumpulan opsi koneksi dan pernyataan umum. Rencana eksekusi yang dihasilkan untuk koneksi dengan satu set opsi (seperti ANSI_NULLS) tidak digunakan kembali untuk koneksi yang memiliki serangkaian opsi lain. Driver ODBC SQL Server Native Client dan penyedia SQL Server Native Client OLE DB keduanya memiliki pengaturan default yang sama untuk opsi ini.

Jika semua pernyataan yang dijalankan dengan SQLExecDirect dikodekan menggunakan konvensi ini, SQL Server dapat menggunakan kembali rencana eksekusi ketika peluang muncul.

Lihat Juga

Pernyataan Eksekusi (ODBC)