CQL(Cassandra Query Language)物化视图
来源:互联网 发布:学淘宝美工要准备什么 编辑:程序博客网 时间:2024/06/16 12:03
物化视图名称由以下语法定义:
view_name ::= re('[a-zA-Z_0-9]+')
创建视图
您可以使用CREATE MATERIALIZED VIEW语句在表上创建物化视图:
create_materialized_view_statement ::= CREATE MATERIALIZED VIEW [ IF NOT EXISTS ]view_name
ASselect_statement
PRIMARY KEY '('primary_key
')' WITHtable_options
例如:
CREATE MATERIALIZED VIEW monkeySpecies_by_population AS SELECT * FROM monkeySpecies WHERE population IS NOT NULL AND species IS NOT NULL PRIMARY KEY (population, species) WITH comment='Allow query by population instead of species';
CREATE MATERIALIZED VIEW语句创建一个新的物化视图。每个这样的视图是一组行,这些行对应于在SELECT语句中指定的基础表或基表中存在的行。物化视图不能直接更新,但对基表的更新将导致视图中的相应更新。
创建物化视图有3个主要部分:
- 限制视图中包含的数据的select语句。
- 视图的主键定义。
- 视图的选项。
尝试创建已存在的实例化视图将返回错误,除非使用IF NOT EXISTS选项。如果使用它,如果物化视图已经存在,语句将是无操作。
物化视图选择语句
物化视图创建的select语句定义了视图中基表被包括的部分。该声明在许多方面有限制:
- 该选择仅限于选择基表的列。换句话说,你不能使用任何函数(聚合或不聚合),转换,term等,也不支持别名。你可以使用*作为选择所有列的快捷方式。此外,静态列不能包含在物化视图中(这意味着如果基表具有静态列,则不允许使用SELECT *)。
- WHERE子句有以下限制:
- 它不能包括任何bind_marker。
- 不是基表主键的一部分的列只能受IS NOT NULL限制。不允许其他限制。
- 因为作为视图主键的一部分的列不能为空,所以它们必须始终至少受IS NOT NULL限制(或任何其他限制,但它们必须有一个限制)。
- 它不能既不具有排序子句,也不具有限制,也不具有过滤。
物化视图主键
视图必须具有主键,并且主键必须符合以下限制:
- 它必须包含基表的所有主键列。 这确保视图的每一行对应于基表的一行。
- 它只能包含基表中不是主键列的单个列。
例如,给出以下基表定义:
CREATE TABLE t ( k int, c1 int, c2 int, v1 int, v2 int, PRIMARY KEY (k, c1, c2))
那么允许以下视图定义:
CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL PRIMARY KEY (c1, k, c2)CREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL PRIMARY KEY (v1, k, c1, c2)
但不允许以下几种:
// Error: cannot include both v1 and v2 in the primary key as both are not in the base table primary keyCREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t WHERE k IS NOT NULL AND c1 IS NOT NULL AND c2 IS NOT NULL AND v1 IS NOT NULL PRIMARY KEY (v1, v2, k, c1, c2)// Error: must include k in the primary as it's a base table primary key columnCREATE MATERIALIZED VIEW mv1 AS SELECT * FROM t WHERE c1 IS NOT NULL AND c2 IS NOT NULL PRIMARY KEY (c1, c2)
物化视图选项
物化视图在内部由表实现,因此,创建物化视图允许与创建表相同的选项。更改物化视图
创建后,您可以使用ALTER MATERIALIZED VIEW语句更改物化视图的选项:
alter_materialized_view_statement ::= ALTER MATERIALIZED VIEWview_name
WITHtable_options
可以更新的选项与创建时相同,因此与表相同。
删除物化视图
删除物化视图用户使用DROP MATERIALIZED VIEW语句:drop_materialized_view_statement ::= DROP MATERIALIZED VIEW [ IF EXISTS ] view_name
;
如果物化视图不存在,则语句将返回错误,除非使用IF EXISTS,在这种情况下操作是无操作。
0 0
- CQL(Cassandra Query Language)物化视图
- CQL(Cassandra Query Language)定义
- CQL(Cassandra Query Language)数据类型
- CQL(Cassandra Query Language)安全性
- CQL(Cassandra Query Language)函数
- CQL(Cassandra Query Language)触发器
- Cassandra Query Language (CQL) v2.0
- Cassandra Query Language (CQL) v2.0
- CQL(Cassandra Query Language)数据定义
- CQL(Cassandra Query Language)数据操作
- CQL(Cassandra Query Language)辅助索引
- CQL(Cassandra Query Language)JSON支持
- Cassandra Query Language (CQL) v3.4.3
- cassandra cql
- cassandra实战--物化视图(Materialized View)
- DB2物化视图(Materialized Query Tables, MQT)
- Cassandra数据操作 -- CQL
- Cassandra CQL使用详解
- svn: E155004 'XX' is already locked
- MFCard:易用的信用卡支付集成类库
- LeetCode 425. Word Squares 单词平方
- HTTPS重定向到HTTP
- 拉手网用户画像
- CQL(Cassandra Query Language)物化视图
- Java入门第11章类的高级特性
- JAVA Servlet笔记
- Serializable和Parcelable的区别
- 从request获取各种路径总结
- SpringMVC string 转成Date 报错!!! 400 Bad Request,the request was sent.语法上...incorrect
- 基本神经网络
- Entity Framework 基础
- 资讯:高通免费视觉SDK-FastCV