SQL Server: Inline vs. Multi-Statement Table-Valued Functions – Pertimbangan Prestasi
SQL Server menawarkan dua jenis fungsi nilai jadual: fungsi nilai jadual berbilang penyata (MSTVF) dan fungsi nilai jadual sebaris (ITVF). Kedua-dua jadual pulangan, tetapi prestasinya berbeza dengan ketara.
Perbezaan utama terletak pada kompilasi mereka: ITVF disusun, menghasilkan pelan pelaksanaan yang dioptimumkan, manakala MSTVF ditafsirkan, menghasilkan rancangan pelaksanaannya pada masa jalankan. Ini selalunya membawa kepada prestasi unggul untuk ITVF, terutamanya apabila fungsi dipanggil berulang kali dengan parameter yang sama.
Tambahan pula, ITVF memanfaatkan statistik jadual, tidak seperti MSTVF. Kelebihan ini penting apabila fungsi melibatkan penapisan atau penggabungan set data yang besar.
Dalam contoh yang diberikan, pergantungan MSTVF pada pertanyaan berasingan untuk penapisan ID pelanggan menghalang keupayaan pengoptimum untuk menggunakan strategi penyertaan yang cekap. Walaupun mengoptimumkan MSTVF untuk mengurangkan berbilang panggilan mungkin meminimumkan percanggahan prestasi, ITVF atau VIEW yang setara biasanya masih mengatasinya kerana aksesnya kepada statistik jadual.
Oleh itu, ITVF biasanya menjadi pilihan utama, menawarkan prestasi yang lebih baik dan penyelenggaraan yang lebih mudah. Walau bagaimanapun, MSTVF tetap diperlukan dalam situasi yang melibatkan parameter dinamik atau memerlukan pengubahsuaian dinamik hasil perantaraan.
Atas ialah kandungan terperinci MSTVF lwn. ITVF dalam Pelayan SQL: Bilakah Anda Harus Memilih Sebaris Daripada Fungsi Berbilang Penyata?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!