当前位置: 首页 > news >正文

天津b2b网站建设公司哪家好郑州seo网站管理

天津b2b网站建设公司哪家好,郑州seo网站管理,哪里有未成年做的网站,雅安市建设局网站物化视图概述 物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。 物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它…

物化视图概述

物化视图(Materialized View)是 PostgreSQL 提供的一个扩展功能,它是介于视图和表之间的一种对象。

物化视图和视图的最大区别是它不仅存储定义中的查询语句,而且可以像表一样存储数据。物化视图和表的最大区别是它不支持 INSERT、UPDATE、DELETE 以及 MERGE 语句,只能通过刷新物化视图进行数据的更新。

物化视图通过提前运行并存储查询结果,通常用于查询优化、数据仓库、数据集成等场景。

另外,PostgreSQL 目前不支持物化视图的实时更新,因此物化视图中的数据通常不是最新数据。

创建物化视图

PostgreSQL 使用 CREATE MATERIALIZED VIEW 语句创建视图:

CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] name
AS query
[ WITH [ NO ] DATA ];

其中,IF NOT EXISTS 可以避免重复创建一个已经存在的物化视图时产生错误;name 是物化视图的名称;query 是物化视图的查询语句。

WITH DATA 表示创建时填充物化视图中的数据,这个是默认选项;WITH NO DATA 表示创建时不填充数据,此时无法查询物化视图中的数据,需要执行 REFRESH MATERIALIZED VIEW 命令刷新物化视图数据之后才能查询。

💡虽然物化视图定义中的查询语句支持 ORDER BY 子句,但是不推荐使用。如果想要以指定顺序显示数据,应该在查询数据时明确指定排序字段,而不应该依赖表中的数据存储顺序。

以下语句创建了一个包含员工统计信息的物化视图:

CREATE MATERIALIZED VIEW emp_stat_mv
AS 
SELECT d.department_name, j.job_title, count(*)
FROM employees e 
JOIN departments d ON d.department_id = e.department_id 
JOIN jobs j ON j.job_id = e.job_id
GROUP BY d.department_name, j.job_title;

物化视图 emp_stat_mv 包含了按照部门和职位统计的员工数量。

我们可以直接查询 emp_stat_mv,获取员工统计信息:

SELECT * 
FROM emp_stat_mv
ORDER BY department_name;department_name |job_title                      |count|
----------------+-------------------------------+-----+
Accounting      |Public Accountant              |    1|
Accounting      |Accounting Manager             |    1|
Administration  |Administration Assistant       |    1|
Executive       |Administration Vice President  |    2|
Executive       |President                      |    1|
Finance         |Accountant                     |    5|
Finance         |Finance Manager                |    1|
Human Resources |Human Resources Representative |    1|
IT              |Programmer                     |    5|
Marketing       |Marketing Manager              |    1|
Marketing       |Marketing Representative       |    1|
Public Relations|Public Relations Representative|    1|
Purchasing      |Purchasing Clerk               |    5|
Purchasing      |Purchasing Manager             |    1|
Sales           |Sales Representative           |   29|
Sales           |Sales Manager                  |    5|
Shipping        |Stock Manager                  |    5|
Shipping        |Stock Clerk                    |   20|
Shipping        |Shipping Clerk                 |   20|

物化视图可以像表一样支持索引,实现约束和查询优化。例如,以下语句为 emp_stat_mv 创建了一个唯一索引:

CREATE UNIQUE INDEX uk_emp_stat_mv ON emp_stat_mv(department_name, job_title);

刷新物化视图

PostgreSQL 物化视图不会自动刷新数据,需要手动执行 REFRESH MATERIALIZED VIEW 语句:

REFRESH MATERIALIZED VIEW [ CONCURRENTLY ] name
[ WITH [ NO ] DATA ];

其中,CONCURRENTLY 可以支持刷新物化视图时其他连接的并发读取。使用该选项的前提是物化视图上至少存在一个唯一索引,而且不能是表达式索引或者部分索引。

WITH DATA 表示刷新时填充物化视图中的数据,这个是默认选项;WITH NO DATA 表示刷新时不填充数据,刷新后物化视图处于不可查询状态。

CONCURRENTLY 和 WITH NO DATA 选项不能一起使用。未填充数据的物化视图刷新时不支持 CONCURRENTLY 选项。

💡如果在物化视图定义的查询语句中指定了 ORDER BY 子句,刷新物化视图数据时不会保证数据仍然按照指定顺序进行存储。

例如,我们可以定期执行以下语句刷新物化视图 emp_stat_mv 中的数据:

REFRESH MATERIALIZED VIEW CONCURRENTLY emp_stat_mv;

或者执行以下语句清空物化视图 emp_stat_mv 中的数据:

REFRESH MATERIALIZED VIEW emp_stat_mv
WITH NO DATA;

修改物化视图

ALTER MATERIALIZED VIEW 语句可以修改物化视图的一些属性,例如名称、字段名等:

ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME [ COLUMN ] column_name TO new_column_name;ALTER MATERIALIZED VIEW [ IF EXISTS ] name
RENAME TO new_name;ALTER MATERIALIZED VIEW [ IF EXISTS ] name
SET SCHEMA new_schema;

第一个语法用于修改物化视图的字段名称,第二个语法用于修改物化视图的名称,第三个语法用于修改物化视图所在的模式。

例如,以下语句将物化视图 emp_stat_mv 的名称修改为 emp_stat_mv2:

ALTER MATERIALIZED VIEW emp_stat_mv 
RENAME TO emp_stat_mv2;

ALTER MATERIALIZED VIEW 语句不能修改物化视图定义中的查询语句;如果想要修改物化视图定义中的查询语句,需要删除并重建物化视图。

ALTER MATERIALIZED VIEW 语句还提供了其他的修改功能,具体可以参考官方文档。

删除物化视图

PostgreSQL 使用 DROP MATERIALIZED VIEW 语句删除物化视图:

DROP MATERIALIZED VIEW [ IF EXISTS ] name [ CASCADE | RESTRICT ];

其中,IF EXISTS 可以避免删除一个不存在的物化视图时产生错误;CASCADE 表示级联删除依赖于该物化视图的对象;RESTRICT 表示如果存在依赖对象则提示错误信息,这是默认值。

我们可以使用以下语句删除物化视图 emp_stat_mv2:

DROP MATERIALIZED VIEW emp_stat_mv2;
http://www.dinnco.com/news/61065.html

相关文章:

  • 怎样在手机上做动漫视频网站百度小说排行榜前十
  • 网站与网页的区别.企业查询官网入口
  • 推荐微网站建设百度霸屏推广靠谱吗
  • 做网站码站长之家seo一点询
  • wordpress quora百度seo按天计费
  • 商丘网站建设大全互联网营销师有什么用
  • 深圳做营销网站设计杭州免费网站制作
  • 网站功能说明怎么做白云百度seo公司
  • 均安网站制作快手刷评论推广网站
  • 网站制作现状解决方案电商平台怎么做
  • 凡科 预约网站创建网站需要多少资金
  • 平山做网站优化seo网站优化助理
  • 政府门户网站建设经验淮南网站seo
  • 品牌网站应该怎么做商城网站开发公司
  • 如何做流量充值网站搜索引擎收录提交入口
  • 营销赚钱网站西安网站关键词排名
  • 怎么注册网站挣流量上海外包seo
  • 全国建设造价信息网站搜索引擎优化方法案例
  • 商家产品展示网站源码爱用建站
  • 一级消防工程师考试试题成都网站排名 生客seo
  • 建设公司自己的网站技术培训平台
  • 网站维护包括的内容如何查一个关键词的搜索量
  • 医院网站源码php太原网站建设谁家好
  • 公司网站建设总结微信营销推广的方式有哪些
  • 2003建立虚拟网站百度推广客服投诉电话
  • 90后做网站月入万元seo专业培训seo专业培训
  • 网站建设 页面建网站需要什么条件
  • 自己做彩票网站友情链接作用
  • 郑州做网站kuihuakeji网络查询网站
  • 吉安网站建设343000seo网站推广简历