视图

简介: 视图

ClickHouse 拥有普通物化两种视图。


普通视图

普通视图只是一层简单的查询代理。创建普通视图的完整语法如下所示:

$ CREATE VIEW [IF NOT EXISTS] [db_name.]view_name AS SELECT ...点击复制复制失败已复制


普通视图不会存储任何数据,它只是一层单纯的 SELECT 查询映射,起着简化查询、明晰语义的作用,对查询性能不会有任何增强。假设有一张普通视图 view_tb_v1 ,他是基于数据表 tb_v1 创建的,那么下面的两条 SELECT 查询是完全等价的:

-- 普通表
$ SELECT * FROM tb_v1;
-- tb_v1的视图
$ SELECT * FROM view_tb_v1;点击复制复制失败已复制


物化视图

物化视图拥有独立的存储,支持表引擎,数据保存形式由它的表引擎决定,创建物化视图的完整语法如下所示:

$ CREATE [MATERIALIZED] VIEW [IF NOT EXISTS] [db.]table_name [TO[db.]name] [ENGINE = engine] [POPULATE] AS SELECT ...点击复制复制失败已复制


物化视图创建好之后,如果源表被写入新数据,那么物化视图也会同步更新。

POPULATE 修饰符决定了物化视图的初始化策略:如果使用了 POPULATE 修饰符,那么在创建视图的过程中,会连带将源表中已存在的数据一并导入,如果执行了 SELECT INTO 一般;反之,如果不适用 POPULATE 修饰符,那么物化视图在创建之后是没有数据的,它只会同步在此之后被写入源表的数据。物化视图目前并不支持同步删除,如果在源表中删除了数据,物化视图的数据仍会保留。


物化视图本质是一张特殊的数据表,例如使用 SHOW TABLES 查询数据表的列表:

$ SHOW TABLES
┌────────────────name─┐
│ .inner.view_test2   │
│ .inner.view_test3   │
└─────────────────────┘点击复制复制失败已复制


可以发现,物化视图也在其中,它们是使用了 .inner 特殊前缀的数据表,所以删除视图的方法是直接使用 DROP TABLE 查询,例如:

$ DROP TABLE view_name;
目录
相关文章
|
5月前
|
SQL 存储 关系型数据库
第14章_视图
第14章_视图
53 0
|
3月前
|
存储 算法 关系型数据库
了解并使用视图
【1月更文挑战第13天】了解并使用视图。
20 1
|
11月前
|
存储 架构师
「架构框架」ArchiMate视图指南(7):信息结构视图和服务实现视图
「架构框架」ArchiMate视图指南(7):信息结构视图和服务实现视图
|
11月前
|
编解码 Android开发
视图 总结 基础
DragViewTaskRelease 使用FrameLayout布局(可以用其他的),内嵌imageView实现悬浮拖动和点击事件,继承View的ontouchEvent进行动作监听和移动 getX(),getY()等方法的区别(图解) BarPercentView 条形进度条(可设置 线性渐变-背景色-进度条颜色-进度条高度) 游戏下载进度条显示 zidingyiView矩形进度框,在构造函数里定义基础属性,初始化布局,定义俩个矩形,onMeasure获取宽高和onDraw方法显示
|
SQL 数据处理
视图的创建
如何创建和使用视图的功能,更好的方便我们的工作。
76 0
|
监控 中间件 程序员
关于开发视图
开发视图是逻辑视图的实现,它又叫实现视图,描述了在开发环境中软件的静态组织结构,主要侧重于软件模块的组织和管理。
645 0
关于开发视图
|
XML 数据格式
数据视图
原文:数据视图 1、数据视图。 使用数据视图,可添加导航逻辑并实现过滤、排序和分组。 2、View对象。 当将结合(或DataTable)绑定到ItemsControl控件时,会不加通告地在后台创建数据视图---位于数据源和绑定的控件之间。
939 0
QTQuick控件基础(3)视图
1、spliteview 2、stackview ApplicationWindow {visible: truewidth: 640height: 480MouseArea{anchors.fill: parentacceptedButtons: Qt.
1251 0