首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何执行数据库视图?

如何执行数据库视图?
EN

Database Administration用户
提问于 2020-07-24 16:11:44
回答 1查看 767关注 0票数 -1

让我们假设有一个设计,其中每个表都由一个视图表示,即简单地选择表的所有列和所有行。

代码语言:javascript
运行
复制
--vw
Select * From sys_table

然后运行一个查询

代码语言:javascript
运行
复制
Select * From vw Where some_column = some_value

数据库将首先在视图中执行查询,将表的所有数据选择到内存中,就像我独立运行查询一样,然后它会运行具有where语句的实际查询吗?

我之所以想知道这是因为我试图了解视图是如何工作的,并想知道数据库是否进行了优化,比如组合查询,以确保不必将全部数据加载到内存中。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-07-24 16:26:35

视图只是存储的查询,当您从视图中选择时,数据库运行与视图关联的查询。

如果您运行explain (analyze)并检查执行计划,您可以很容易地看到这一点。

假设下表和视图:

代码语言:javascript
运行
复制
create table data (id integer primary key, some_date date, some_number numeric);
create view v_data as select * from data;

当我跑步时:

代码语言:javascript
运行
复制
explain analyze 
select * 
from v_data
where id = 42;

我得到以下执行计划:

代码语言:javascript
运行
复制
Index Scan using data_pkey on data  (cost=0.15..8.17 rows=1 width=40) (actual time=0.006..0.006 rows=1 loops=1)
  Index Cond: (id = 42)
Planning Time: 0.104 ms
Execution Time: 0.023 ms

如您所见,视图的名称甚至没有显示在计划中。

有关潜在性能陷阱的更多见解,请参见视图对PostgreSQL中的性能是否有害?

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/271591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档