Mệnh đề SELECT trong câu lệnh tạo materialized view đại diện cho dữ liệu mà view sẽ chứa. Có một số hạn chế về gì có thể chỉ định và nhiều bảng có thể join lại với nhau. Có nhiều yếu tố bao gồm views, inline views (subquery trong mệnh đề FROM của SELECT), subqueries, và materialized views có thể được join hoặc imputed trong mệnh đề SELECT.
Các loại Materialized views:
Materialized Views with Aggregates (Có Tổng Hợp)
Trong kho dữ liệu, materialized views thường chứa aggregates. Để fast refresh (làm mới nhanh) có thể thực hiện, danh sách SELECT phải chứa tất cả cột GROUP BY (nếu có), và phải có COUNT(*) và COUNT(column) trên một số cột tổng hợp. Các hàm tổng hợp hợp lệ: SUM, COUNT(x), COUNT(*), AVG, VARIANCE, STDDEV, MIN, MAX. Biểu thức được tổng hợp có thể là bất kỳ biểu thức giá trị SQL nào. Materialized view logs phải hiện diện trên tất cả bảng được tham chiếu trong truy vấn định nghĩa view.
Materialized Views Containing Only Joins (Chỉ Chứa Joins)
Một số materialized views chỉ chứa joins và không có aggregates, ví dụ view join sales table với times và customers tables. Lợi ích: các join đắt giá được tính trước. Fast refresh cho view chỉ joins áp dụng sau bất kỳ loại DML nào trên base tables (direct-path hoặc conventional INSERT, UPDATE, DELETE). View chỉ joins có thể được định nghĩa refresh ON COMMIT hoặc ON DEMAND. Nếu ON COMMIT, refresh xảy ra tại thời điểm commit của transaction làm DML trên bảng phân tích của view.
Nếu view chỉ joins, cột ROWID cho mỗi bảng (và mỗi instance của bảng xuất hiện nhiều lần trong FROM list) phải có mặt trong SELECT list của view. Nếu view có remote tables trong FROM clause, tất cả bảng trong FROM clause phải đặt trên cùng site. Ngoài ra, ON COMMIT refresh không hỗ trợ view có remote tables. Materialized view logs phải có trên remote site cho mỗi detail table của view và cột ROWID phải có trong SELECT list.
Nested Materialized Views (Materialized Views Lồng Nhau)
Nested materialized view là materialized view mà định nghĩa của nó dựa trên materialized view khác. Nested materialized view có thể tham chiếu các quan hệ khác nhau trong cơ sở dữ liệu bao gồm tham chiếu materialized views khác.
Trong data warehouse, thường tạo một số aggregate views trên một single join (ví dụ: rollups dọc nhiều dimension). Việc maintain tăng dần các materialized aggregate views riêng biệt này có thể mất thời gian lâu, vì basic join phải thực hiện nhiều lần.