数据库中虚拟表与实际表有何根本性差异?
- 内容介绍
- 文章标签
- 相关推荐
一、概念快速回顾
虚拟表不是实际存储数据的实体,而是基于一个或多个实际表的 SELECT 语句定义的逻辑结构。说起来,程序在查询视图时会动态执行对应的 SQL,返回结果集。
实际表数据真实写入磁盘的物理表。通过 CREATE TABLE 创建,支持完整的 DML操作。
二、根本性差异一览
1️⃣ 存储方式
- 实际表:数据行以页/块形式持久化在磁盘上,占用真实存储空间。说起来,
- 虚拟表:不占用任何硬盘空间。只保存查询定义,结果在运行时即时生成并保存在内存中,查询结束即被销毁。按理说,
2️⃣ 定义与创建方式
-
实际表:使用
CREATE TABLE …明确定义列、约束、索引等结构。 -
虚拟表:使用
CREATE VIEW …AS SELECT ,或数据库特有的临时/CTE 语法,仅保存 SELECT 逻辑。
3️⃣ 数据操作权限
- 实际表:支持 INSERT、UPDATE、DELETE,可直接修改底层数据。
- 虚拟表:本质上只读;其实,想“修改”只能对其依赖的实际表进行 DML,或使用可更新视图。
4️⃣ 数据一致性与实时性
- 实际表:任何写入都会立即体现在后续查询中,保持强一致性。
- 虚拟表:CREATE VIEW 本身不缓存结果,查询时每次重新计算;若使用物化视图,则会有刷新策略导致延迟一致性。
一、概念快速回顾
虚拟表不是实际存储数据的实体,而是基于一个或多个实际表的 SELECT 语句定义的逻辑结构。说起来,程序在查询视图时会动态执行对应的 SQL,返回结果集。
实际表数据真实写入磁盘的物理表。通过 CREATE TABLE 创建,支持完整的 DML操作。
二、根本性差异一览
1️⃣ 存储方式
- 实际表:数据行以页/块形式持久化在磁盘上,占用真实存储空间。说起来,
- 虚拟表:不占用任何硬盘空间。只保存查询定义,结果在运行时即时生成并保存在内存中,查询结束即被销毁。按理说,
2️⃣ 定义与创建方式
-
实际表:使用
CREATE TABLE …明确定义列、约束、索引等结构。 -
虚拟表:使用
CREATE VIEW …AS SELECT ,或数据库特有的临时/CTE 语法,仅保存 SELECT 逻辑。
3️⃣ 数据操作权限
- 实际表:支持 INSERT、UPDATE、DELETE,可直接修改底层数据。
- 虚拟表:本质上只读;其实,想“修改”只能对其依赖的实际表进行 DML,或使用可更新视图。
4️⃣ 数据一致性与实时性
- 实际表:任何写入都会立即体现在后续查询中,保持强一致性。
- 虚拟表:CREATE VIEW 本身不缓存结果,查询时每次重新计算;若使用物化视图,则会有刷新策略导致延迟一致性。

