Jawaban:
Mereka disebut tampilan terindeks di SQL Server - baca kertas putih berikut untuk latar belakang selengkapnya:
Pada dasarnya, yang perlu Anda lakukan adalah:
dan selesai!
Bagian yang rumit adalah: tampilan harus memenuhi sejumlah kendala dan batasan - yang diuraikan di kertas putih. Jika Anda melakukan ini - hanya itu yang ada. Tampilan diperbarui secara otomatis, tidak perlu perawatan.
Sumber daya tambahan:
Meskipun murni dari perspektif teknik, tampilan yang diindeks terdengar seperti sesuatu yang dapat digunakan semua orang untuk meningkatkan kinerja, tetapi skenario kehidupan nyata sangat berbeda. Saya tidak berhasil menggunakan tampilan terindeks di mana saya paling membutuhkannya karena terlalu banyak batasan tentang apa yang dapat diindeks dan apa yang tidak.
Jika Anda memiliki gabungan luar dalam tampilan, mereka tidak dapat digunakan. Juga, ekspresi tabel umum tidak diperbolehkan ... Bahkan jika Anda memiliki pengurutan dalam subselect atau tabel turunan (seperti dengan partisi dengan klausa), Anda juga kurang beruntung.
Itu hanya menyisakan skenario yang sangat sederhana untuk memanfaatkan tampilan yang diindeks, sesuatu yang menurut saya dapat dioptimalkan dengan membuat indeks yang tepat pada tabel yang mendasarinya.
Saya akan sangat senang mendengar beberapa skenario kehidupan nyata di mana orang benar-benar menggunakan tampilan terindeks untuk keuntungan mereka dan tidak dapat melakukannya tanpa mereka
(NOEXPAND)
petunjuk ke kueri yang menggunakan tampilan terindeks. Dan kemudian Anda melihat perbedaannya. Keuntungan menggunakan tampilan yang diindeks vs "mengindeks tabel dengan benar" adalah dalam membatasi pilihan rekaman, jika tidak, Anda benar, itu akan sama.
Anda mungkin perlu lebih banyak latar belakang tentang apa sebenarnya Materialized View itu. Di Oracle, ini adalah objek yang terdiri dari sejumlah elemen saat Anda mencoba membangunnya di tempat lain.
MVIEW pada dasarnya adalah cuplikan data dari sumber lain. Tidak seperti tampilan, data tidak ditemukan saat Anda membuat kueri, tampilan itu disimpan secara lokal dalam bentuk tabel. MVIEW disegarkan menggunakan prosedur latar belakang yang dimulai secara berkala atau ketika data sumber berubah. Oracle memungkinkan penyegaran penuh atau sebagian.
Di SQL Server, saya akan menggunakan yang berikut ini untuk membuat MVIEW dasar untuk (menyelesaikan) refresh secara teratur.
Pertama, pemandangan. Ini semestinya mudah bagi kebanyakan orang karena tampilan cukup umum dalam database apa pun. Berikutnya, tabel. Ini harus identik dengan tampilan di kolom dan data. Ini akan menyimpan snapshot dari data tampilan. Kemudian, prosedur yang memotong tabel, dan memuatnya kembali berdasarkan data saat ini dalam tampilan. Akhirnya, pekerjaan yang memicu prosedur untuk memulainya berhasil.
Yang lainnya adalah eksperimen.
Jika tampilan yang diindeks bukan merupakan opsi, dan pembaruan cepat tidak diperlukan, Anda dapat membuat tabel cache retas:
select * into cachetablename from myviewname
alter table cachetablename add primary key (columns)
-- OR alter table cachetablename add rid bigint identity primary key
create index...
lalu sp_rename view / table atau ubah kueri atau tampilan lain yang mereferensikannya untuk mengarah ke tabel cache.
jadwalkan harian / malam / mingguan / yang tidak menyegarkan seperti
begin transaction
truncate table cachetablename
insert into cachetablename select * from viewname
commit transaction
NB: ini akan memakan ruang, juga di log tx Anda. Paling baik digunakan untuk kumpulan data kecil yang lambat untuk dihitung. Mungkin refactor untuk menghilangkan kolom "mudah tapi besar" terlebih dahulu ke tampilan luar.
Untuk MS T-SQL Server, saya sarankan untuk membuat indeks dengan pernyataan "include". Keunikan tidak diperlukan, begitu pula pengurutan fisik data yang terkait dengan indeks berkerumun. "Index ... Include ()" membuat penyimpanan data fisik terpisah yang secara otomatis dikelola oleh sistem. Ini secara konseptual sangat mirip dengan Oracle Materialized View.
https://msdn.microsoft.com/en-us/library/ms190806.aspx
https://technet.microsoft.com/en-us/library/ms189607(v=sql.105).aspx