Memproses Pernyataan SQL

Sebelum membahas teknik untuk menggunakan SQL secara terprogram, perlu untuk membahas bagaimana pernyataan SQL diproses. Langkah-langkah yang terlibat umum untuk ketiga teknik, meskipun setiap teknik melakukannya pada waktu yang berbeda. Ilustrasi berikut menunjukkan langkah-langkah yang terlibat dalam pemrosesan pernyataan SQL, yang dibahas di seluruh bagian ini.

Steps for processing an SQL statement

Untuk memproses pernyataan SQL, DBMS melakukan lima langkah berikut:

  1. DBMS pertama kali mengurai pernyataan SQL. Ini memecah pernyataan menjadi kata-kata individu, yang disebut token, memastikan bahwa pernyataan tersebut memiliki kata kerja yang valid dan klausul yang valid, dan sebagainya. Kesalahan sintaksis dan kesalahan ejaan dapat dideteksi dalam langkah ini.

  2. DBMS memvalidasi pernyataan. Ini memeriksa pernyataan terhadap katalog sistem. Apakah semua tabel bernama dalam pernyataan ada di database? Apakah semua kolom ada dan apakah nama kolom tidak ambigu? Apakah pengguna memiliki hak istimewa yang diperlukan untuk menjalankan pernyataan? Kesalahan semantik tertentu dapat dideteksi dalam langkah ini.

  3. DBMS menghasilkan rencana akses untuk pernyataan tersebut. Rencana akses adalah representasi biner dari langkah-langkah yang diperlukan untuk melakukan pernyataan; ini adalah DBMS yang setara dengan kode yang dapat dieksekusi.

  4. DBMS mengoptimalkan rencana akses. Ini mengeksplorasi berbagai cara untuk melakukan rencana akses. Dapatkah indeks digunakan untuk mempercepat pencarian? Haruskah DBMS terlebih dahulu menerapkan kondisi pencarian ke Tabel A lalu menggabungkannya ke Tabel B, atau haruskah dimulai dengan gabungan dan menggunakan kondisi pencarian setelahnya? Bisakah pencarian berurutan melalui tabel dihindari atau dikurangi ke subset tabel? Setelah menjelajahi alternatif, DBMS memilih salah satunya.

  5. DBMS menjalankan pernyataan dengan menjalankan rencana akses.

Langkah-langkah yang digunakan untuk memproses pernyataan SQL bervariasi dalam jumlah akses database yang mereka butuhkan dan jumlah waktu yang mereka ambil. Mengurai pernyataan SQL tidak memerlukan akses ke database dan dapat dilakukan dengan sangat cepat. Pengoptimalan, di sisi lain, adalah proses yang sangat intensif CPU dan memerlukan akses ke katalog sistem. Untuk kueri yang kompleks dan multitabel, pengoptimal dapat menjelajahi ribuan cara berbeda untuk melakukan kueri yang sama. Namun, biaya eksekusi kueri secara tidak efisien biasanya sangat tinggi sehingga waktu yang dihabiskan dalam pengoptimalan lebih dari mendapatkan kembali kecepatan eksekusi kueri yang meningkat. Ini bahkan lebih signifikan jika paket akses yang dioptimalkan yang sama dapat digunakan berulang kali untuk melakukan kueri berulang.