临时表
临时表与永久表相似,但临时表存储在 tempdb 中,当不再使用时会自动删除。
临时表有两种类型:本地和全局。它们在名称、可见性以及可用性上有区别。本地临时表的名称以单个数字符号 (#) 打头;它们仅对当前的用户连接是可见的;当用户从 SQL Server 实例断开连接时被删除。全局临时表的名称以两个数字符号 (##) 打头,创建后对任何用户都是可见的,当所有引用该表的用户从 SQL Server 断开连接时被删除。
例如,如果创建了 employees 表,则任何在数据库中有使用该表的安全权限的用户都可以使用该表,除非已将其删除。如果数据库会话创建了本地临时表 #employees,则仅会话可以使用该表,会话断开连接后就将该表删除。如果创建了 ##employees 全局临时表,则数据库中的任何用户均可使用该表。如果该表在您创建后没有其他用户使用,则当您断开连接时该表删除。如果您创建该表后另一个用户在使用该表,则 SQL Server 将在您断开连接并且所有其他会话不再使用该表时将其删除。
视图视图
可以被看成是虚拟表或存储查询。除非是索引视图,否则视图的数据不会作为非重复对象存储在数据库中。数据库中存储的是 SELECT 语句。SELECT 语句的结果集构成视图所返回的虚拟表。用户可以采用引用表时所使用的方法,在 Transact-SQL 语句中引用视图名称来使用此虚拟表
视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。视图在数据库中并不是以数据值存储集形式存在,除非是索引视图。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。例如,如果有多台不同的服务器分别存储您的单位在不同地区的数据,而您需要将这些服务器上结构相似的数据组合起来,这种方式就很有用。
通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
视图种类:索引视图和索引视图
SQL Server 2005 查询处理器对索引视图和非索引视图将区别对待: 索引视图的行以表的格式存储在数据库中。如果查询优化器决定使用查询计划的索引视图,则索引视图将按照基表的处理方式进行处理。只有非索引视图的定义才存储,而不存储视图的行。查询优化器将视图定义中的逻辑纳入执行计划,而该执行计划是它为引用非索引视图的 SQL 语句生成的。
SQL Server 查询优化器用于决定何时使用索引视图的逻辑与用于决定何时对表使用索引的逻辑相似。如果索引视图中的数据包括所有或部分 SQL 语句,而且查询优化器确定视图的某个索引是低成本的访问路径,则不论查询中是否引用了该视图的名称,查询优化器都将选择此索引。当 SQL 语句引用非索引视图时,分析器和查询优化器将分析 SQL 语句的源和视图的源,然后将它们解析为单个执行计划。
分享到:
相关推荐
### MySQL临时表与派生表详解 #### 一、MySQL临时表 **1.1 临时表概述** MySQL中的临时表是一种特殊的表类型,主要用于存储临时数据或中间结果集,适用于那些需要多次查询同一结果集的场景。根据存储位置的不同,...
在数据库管理与优化中,临时表和物化视图是两个重要的概念,它们都用于提高数据库查询的效率,但实现方式和应用场景有所不同。本文将详细探讨这两种技术的区别、使用场景及代码示例。 临时表和物化视图都是提高...
需要注意的是,与SQL Server和Sybase等其他数据库系统相比,Oracle中不应在运行时动态创建临时表,而应在应用程序安装时创建。DDL操作(如创建表)开销较大,应尽量避免在运行时执行。 总结来说,Oracle的临时表...
本文将深入探讨如何在单表、多表环境下使用Update与Select的组合,以及临时表和视图的区别。 首先,我们来看Update与Select联用操作单表和多表的示例。在单表操作中,可以使用Update语句直接指定要更新的字段,并...
SQL Server 临时表与 Oracle 临时表类似,但有所不同。SQL Server 临时表可以分为两种:本地临时表和全局临时表。 本地临时表 本地临时表以单个数字符号 (#) 打头,仅对当前的用户连接是可见的。当用户从 SQL ...
此外,Oracle8i还引入了临时表,这些表在会话结束时自动清除,适用于临时性数据的存储。 创建表使用 `CREATE TABLE` 语句,需要指定表名、列名以及列的数据类型和大小。例如,创建一个名为`products`的表,包含`...
在Oracle数据库系统中,表空间(Tablespace)是存储数据对象(如表、索引、视图等)的逻辑单位,而临时表空间(Temporary Tablespace)则用于存储临时数据,比如排序或联接操作产生的中间结果。创建和管理表空间及...
数据库管理员可以使用动态性能视图`v$sort_usage`来查看临时表空间的使用情况,以便判断是否需要优化相关设置。如果发现临时表空间频繁使用,可能需要考虑调整PGA大小、增加内存或优化查询语句,以减少对临时表空间...
5. **临时表与性能** 由于临时表的数据不持久化,它们在处理大量临时数据时能提高性能,尤其是当处理结束后不再需要这些数据时。同时,它们减少了对数据库空间的需求,降低了数据库的维护成本。 6. **在存储过程和...
可以通过查询数据库视图来检查临时表空间的大小和使用状况。例如,可以使用以下SQL语句查看每个临时表空间的总大小、已使用空间以及可用空间: ```sql select t1."Tablespace" "Tablespace", t1."Total (G)" "Total...
视图、触发器、临时表、派生表
### 常用的Oracle表和视图知识点详解 #### 一、查询某个表在哪些存储过程中被使用 为了高效地了解某个特定表在哪些存储过程中被引用,可以通过以下SQL查询来实现: ```sql SELECT A.NAME AS 过程名称, MIN(A.LINE...
尽管是临时的,但临时表仍可创建索引,也可以在其上构建视图。这些索引和视图同样具有会话或事务的私有性。临时表甚至可以拥有触发器,这允许在数据插入、更新或删除时执行特定的操作,进一步增强了临时表的功能性。...
- **索引和视图**:可以对临时表创建索引并基于临时表创建视图,但这些索引也是临时的,只对当前会话或事务有效。 - **触发器支持**:临时表可以拥有触发器,扩展了功能。 - **导入导出**:可以使用`EXPDP`和`...
会话级临时表的数据存活期与会话同步,即当用户结束会话时,Oracle会自动清理该会话在临时表中产生的所有数据。另一方面,事务级临时表的数据则仅在事务期间有效,一旦事务提交(commit)或回滚(rollback),临时表...
**注意**:避免使用`IF EXISTS`与`sysobjects`视图来删除临时表,因为这种方法可能因临时表的名称改变或所在数据库不同而失败。 ### 临时表的生命周期 临时表仅在创建它的会话中存在,当会话结束时,临时表会被...
- 可以对临时表创建索引并基于临时表建立视图,但这些索引仅对当前会话有效。 - 临时表可以拥有触发器。 - 可以通过`EXP`和`IMP`工具导出临时表的定义,但不能导出数据。 **使用技巧:** - 当多个大表需要关联查询...
- **索引与视图**:SQL Server的临时表也可以创建索引和视图,但与Oracle不同的是,这些索引和视图的生命周期通常与临时表相同,直到会话结束。 - **触发器**:SQL Server的临时表同样支持触发器。 - **创建方法*...
- **DBA_USERS**:提供关于数据库用户的详细信息,包括用户名、默认表空间、临时表空间等。 - **DBA_ROLES**:提供关于角色的信息,包括角色名称、权限等。 9. **表空间和数据文件** - **DBA_TABLESPACES**:提供...