Ya , tampilan dapat memiliki indeks yang dikelompokkan ditugaskan dan, ketika mereka melakukannya, mereka akan menyimpan hasil sementara yang dapat mempercepat permintaan yang dihasilkan.
Pembaruan: Setidaknya tiga orang telah memilih saya untuk hal ini. Dengan segala hormat, saya pikir mereka salah; Dokumentasi Microsoft sendiri membuatnya sangat jelas bahwa Views dapat meningkatkan kinerja.
Pertama, pandangan sederhana diperluas sehingga tidak berkontribusi langsung pada peningkatan kinerja - itu memang benar. Namun, tampilan yang diindeks dapat secara dramatis meningkatkan kinerja.
Biarkan saya langsung pergi ke dokumentasi:
Setelah indeks berkerumun unik dibuat pada tampilan, set hasil tampilan segera terwujud dan bertahan dalam penyimpanan fisik dalam database, menghemat overhead melakukan operasi mahal ini pada waktu pelaksanaan.
Kedua, pandangan yang diindeks ini dapat bekerja bahkan ketika mereka tidak direferensikan secara langsung oleh permintaan lain karena pengoptimal akan menggunakannya sebagai pengganti referensi tabel bila perlu.
Lagi-lagi, dokumentasi:
Tampilan yang diindeks dapat digunakan dalam eksekusi permintaan dalam dua cara. Kueri dapat mereferensikan tampilan yang diindeks secara langsung, atau, yang lebih penting, optimizer kueri dapat memilih tampilan jika menentukan bahwa tampilan dapat diganti untuk beberapa atau semua permintaan dalam rencana kueri berbiaya terendah. Dalam kasus kedua, tampilan yang diindeks digunakan sebagai pengganti tabel yang mendasari dan indeks biasa mereka. Tampilan tidak perlu direferensikan dalam kueri agar pengoptimal kueri menggunakannya selama eksekusi kueri. Ini memungkinkan aplikasi yang ada mendapat manfaat dari tampilan indeks yang baru dibuat tanpa mengubah aplikasi tersebut.
Dokumentasi ini, serta bagan yang menunjukkan peningkatan kinerja, dapat ditemukan di sini .
Pembaruan 2: jawabannya telah dikritik atas dasar bahwa itu adalah "indeks" yang memberikan keuntungan kinerja, bukan "Lihat." Namun, ini mudah dibantah.
Katakanlah kita adalah perusahaan perangkat lunak di negara kecil; Saya akan menggunakan Lithuania sebagai contoh. Kami menjual perangkat lunak di seluruh dunia dan menyimpan catatan kami di database SQL Server. Kami sangat sukses dan, dalam beberapa tahun, kami memiliki 1.000.000 catatan. Namun, kami sering perlu melaporkan penjualan untuk keperluan pajak dan kami menemukan bahwa kami hanya menjual 100 salinan perangkat lunak kami di negara asal kami. Dengan membuat tampilan indeks hanya catatan Lithuania, kita bisa menyimpan catatan yang kita butuhkan dalam cache yang diindeks seperti yang dijelaskan dalam dokumentasi MS. Ketika kami menjalankan laporan kami untuk penjualan Lithuania pada tahun 2008, permintaan kami akan mencari melalui indeks dengan kedalaman hanya 7 (Log2 (100) dengan beberapa daun yang tidak digunakan). Jika kita melakukan hal yang sama tanpa LIHAT dan hanya mengandalkan indeks ke dalam tabel, kita harus melintasi pohon indeks dengan kedalaman pencarian 21!
Jelas, View itu sendiri akan memberi kita keunggulan kinerja (3x) dibandingkan dengan penggunaan sederhana indeks saja. Saya sudah mencoba menggunakan contoh dunia nyata tetapi Anda akan perhatikan bahwa daftar sederhana penjualan Lithuania akan memberi kita keuntungan yang lebih besar.
Perhatikan bahwa saya hanya menggunakan b-tree lurus sebagai contoh. Sementara saya cukup yakin bahwa SQL Server menggunakan beberapa varian dari b-tree, saya tidak tahu detailnya. Meskipun demikian, intinya tetap berlaku.
Pembaruan 3: Pertanyaan telah muncul tentang apakah Tampilan Indexed hanya menggunakan indeks yang ditempatkan di tabel yang mendasarinya. Artinya, untuk parafrase: "tampilan yang diindeks hanya setara dengan indeks standar dan tidak menawarkan sesuatu yang baru atau unik untuk tampilan." Jika ini benar, tentu saja, maka analisis di atas akan salah! Biarkan saya memberikan kutipan dari dokumentasi Microsoft yang menunjukkan mengapa saya pikir kritik ini tidak valid atau benar:
Menggunakan indeks untuk meningkatkan kinerja kueri bukanlah konsep baru; namun, tampilan yang diindeks memberikan manfaat kinerja tambahan yang tidak dapat dicapai menggunakan indeks standar.
Bersama dengan kutipan di atas mengenai persistensi data dalam penyimpanan fisik dan informasi lain dalam dokumentasi tentang bagaimana indeks dibuat pada Views, saya pikir lebih aman untuk mengatakan bahwa Tampilan Terindeks bukan hanya Pilih SQL yang di-cache yang kebetulan menggunakan indeks didefinisikan pada tabel utama. Jadi, saya terus mendukung jawaban ini.