Tampilan berfungsi seperti tabel , tapi itu bukan tabel. Itu tidak pernah ada; itu hanya pernyataan SQL yang disiapkan yang dijalankan saat Anda mereferensikan nama tampilan. yaitu:
CREATE VIEW foo AS
SELECT * FROM bar
SELECT * FROM foo
...setara dengan berlari:
SELECT x.*
FROM (SELECT * FROM bar) x
MySQLDump tidak akan pernah berisi baris untuk dimasukkan ke dalam tampilan...
Sayangnya, itu dengan desain (walaupun dipertanyakan). Ada banyak batasan untuk tampilan MySQL, yang didokumentasikan:http://dev.mysql.com/doc/refman/5.0/en/create-view.html
Jadi jika itu hanya tabel imajiner/pernyataan yang disiapkan, apakah itu berarti secara teoritis memiliki kinerja yang sama (atau bahkan kurang) seperti tabel/kueri normal?
Tidak.
Sebuah tabel dapat memiliki indeks yang terkait, yang dapat membuat pengambilan data lebih cepat (dengan biaya tertentu untuk penyisipan/pembaruan). Beberapa database mendukung tampilan "terwujud", yang merupakan tampilan yang dapat menerapkan indeks - yang seharusnya tidak mengejutkan bahwa MySQL tidak mendukung mengingat fungsionalitas tampilan terbatas (yang baru dimulai di v5 IIRC, sangat terlambat untuk permainan).
Karena tampilan adalah tabel turunan, kinerja tampilan hanya sebaik kueri yang menjadi dasar pembuatannya. Jika kueri itu menyebalkan, masalah kinerja hanya akan menjadi bola salju... Yang mengatakan, saat menanyakan tampilan - jika referensi kolom tampilan dalam klausa WHERE tidak dibungkus dengan fungsi (IE:WHERE v.column LIKE ...
, tidak WHERE LOWER(t.column) LIKE ...
), pengoptimal dapat mendorong kriteria (disebut predikat) ke kueri asli - membuatnya lebih cepat.