create_view, describe_view, list_views, and drop_view
submit SQL through the connection’s Flight endpoint. drop_view_async returns
a job of type query whose single id is the SQL query UUID. Waiting confirms
catalog removal; physical cleanup can continue afterward.
CREATE VIEW
name, query, and schema columns.
query contains the stored query, including any declared column aliases, and
schema contains its Arrow schema as JSON. The schema metadata keys
lancedb::view::default_db and lancedb::view::default_namespace identify the
defining database and namespace. The root namespace is public; nested
namespace components are separated by $.
DESCRIBE VIEW "recent_matches" returns the same metadata shape. Anything the
dialect supports can define one: joins, predicates,
aggregates, window functions.
Reading one
A view is queried like a table:DROP VIEW
Listing
SHOW VIEWS returns ascending name values. The name cursor is scoped to
the selected namespace.
Object commands retain their small results in shared storage even when general
query-result copying is disabled, so asynchronous polling can use any query node.
Views and tables share a namespace, and both are things you can query. The
catalog distinguishes them:
Use the relation listing when the question is “what can I select from,” and the
separate listings when the distinction matters: before dropping, for
instance, since dropping a view removes only the saved query while dropping a
table removes data.
Choosing between a view and a materialized view
Reach for a view when the query is cheap, or when reading stale rows would
be wrong. Reach for a materialized view when the query is expensive and the
data changes less often than it is read.
The privileges are separate too:
CREATE_VIEW and CREATE_MATERIALIZED_VIEW
are distinct grants on a namespace, so the ability to create one does not imply
the other. See Authorization.
What to read next
Materialized View
The stored-rows counterpart.
Management
Where views fit among the other catalog objects.