SQL:针对表的视图 - 针对视图的查询是不是仍在使用表索引?

     2023-02-26     214

关键词:

【中文标题】SQL:针对表的视图 - 针对视图的查询是不是仍在使用表索引?【英文标题】:SQL: View against Table - are queries against the View still using Table Indexes?SQL:针对表的视图 - 针对视图的查询是否仍在使用表索引? 【发布时间】:2009-06-01 19:23:45 【问题描述】:

我正在对我的表(“用户”)使用视图(“用户活动”)。该视图只有一个过滤器,它检查 DateTime Users.DeletedOn 是否为 NULL;它基本上包含了所有未被删除的用户。

如果我现在对视图而不是表执行 Linq 查询,它们是否仍会使用表索引,或者我是否需要为视图创建特殊索引?在我的理解中,视图只不过是一个预定义的查询,应该像我直接查询它一样工作:

SELECT * FROM Users WHERE DeletedON = NULL

我对基础表的索引仍将使用的假设是否正确?

【问题讨论】:

你的假设是正确的 :) 【参考方案1】:

大多数时候,SQL Server 查询优化器足够聪明,可以使用基表上的索引。您可以通过查看查询计划来了解这一点。

如果您有企业版的 SQL Server,您也可以使用索引视图。

【讨论】:

【参考方案2】:

视图对于底层的 SQL 语句是完全透明的。这是一个很好的可靠设计假设。

【讨论】:

【参考方案3】:

索引视图与非索引视图非常不同。

引擎可以有效地内联扩展视图,因此可以使用优化器确定的任何表索引。

索引视图具体化(并保持最新)索引。这对视图的用户可用,但仍可能无法使用。

基于您的示例的附加说明 - 索引可能不会像在标志或代码列上那样有效地用于 NULL 条件。

【讨论】:

【参考方案4】:

您很可能需要重写您的查询:

SELECT * FROM Users WHERE DeletedON IS NULL

即使 DeletedON 为 NULL,DeletedON = NULL 也不会为真

【讨论】:

【参考方案5】:

如果未编入索引,则每次使用定义它的查询都会重新生成视图。如果该查询中的表已编入索引,则将使用该表的索引。

您还可以为视图编制索引,在这种情况下,数据集将提交到物理磁盘,您将拥有两组索引。

【讨论】:

mysql初级篇——视图的相关概念及应用举例(代码片段)

...们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据 查看详情

NSLayoutConstraint:针对stackview中的视图进行布局是不是是一种好习惯?

】NSLayoutConstraint:针对stackview中的视图进行布局是不是是一种好习惯?【英文标题】:NSLayoutConstraint:Isitgoodpractice(ornot)tolayoutagainstviewsinstackview?NSLayoutConstraint:针对stackview中的视图进行布局是否是一种好习惯?【发布时间】:2018... 查看详情

mysql第十二期视图(代码片段)

...们使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。比如,针对一个公司的销售人员,我们只想给他看部分数据,而某些特殊的数据,比如采购的价格,则不会提供给... 查看详情

使用查询从 sql 视图中检索引用表的列表

】使用查询从sql视图中检索引用表的列表【英文标题】:Retrievinglistofreferencedtablesfromasqlviewusingaquery【发布时间】:2012-09-1114:47:55【问题描述】:有没有一种方法可以轻松检索视图下的表列表。例如,在以下视图中:CREATEVIEWExample... 查看详情

sql中如果进行模糊查询整个表

我想做关键字搜索搜索的关键字不是针对某个字段而是真对正个表的所有字段如果你说对每个字段都进行like就不用回答了如果是1000个字段呢那我不是要写死参考技术A楼上的等于没说createproc名@表名varchar(100),@参数varchar(100)asdeclar... 查看详情

VBA 中是不是有针对没有结果的 sql 查询的解决方法?

】VBA中是不是有针对没有结果的sql查询的解决方法?【英文标题】:IsthereaworkaroundinVBAforsqlquerieswithnoresults?VBA中是否有针对没有结果的sql查询的解决方法?【发布时间】:2015-04-0400:58:01【问题描述】:我有一个VBA程序,其中的一... 查看详情

视图&事务&存储过程&流程控制

...非由程序调用和手动启动。为什么使用触发器?触发器是针对于对于某张表数据增insert,改update,删delete的行为,这类操作行为一旦执行就会触发触发器的执行,即自动执行另一端sql代码创建触发器语法#针对插入:create 查看详情

视图和存储过程(代码片段)

...以方便地重用它而不必知道它的基本查询细节。3)使用表的组成部分而不是整个表。4)保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。5)更改数据格式和表示。视图可返回与底层表的表示和格式... 查看详情

第二十二章使用视图

...2.视图的应用场景:A:重用SQL语句B:简化复杂的sql语句C:使用表的组成部分而不是表D:保护数据,可以给用户授予表的特定部分的访问E:更改数据格式和表示。视图可返回与底层表的表示和格式不同的数据3.因为视图不包含数据,所以... 查看详情

如何查询 BigQuery 视图和表的依赖关系?

】如何查询BigQuery视图和表的依赖关系?【英文标题】:HowtoqueryBigQueryviewandtabledependencies?【发布时间】:2020-10-0705:53:26【问题描述】:在BigQuery上构建多个SQL视图作为报告后,我发现自己需要识别视图和表的依赖关系。如何查询... 查看详情

如果表不存在,如何运行包含针对另一个 sql 实例上的表的查询的 If-Then-Else 语句?

】如果表不存在,如何运行包含针对另一个sql实例上的表的查询的If-Then-Else语句?【英文标题】:HowtorunanIf-Then-Elsestatementwhichincludesaqryagainstatableonanothersqlinstance,iftabledoesnotexists?【发布时间】:2015-08-1318:25:00【问题描述】:如果... 查看详情

横幅 - 是不是有内置视图?

】横幅-是不是有内置视图?【英文标题】:Banner-isthereabuilt-inview?横幅-是否有内置视图?【发布时间】:2019-04-0322:43:39【问题描述】:Android中是否有现有的View用于banner?还是我需要自己使用specs构建一个?需要明确的是,这不... 查看详情

视图触发器存储过程函数流程过程索引慢查询(代码片段)

...动触发的功能称之为触发器为何要用触发器?触发器专门针对我们对某一张表数据增insert、删delete、改update的行为,这类行为一旦执行?就会触发触发器的执行,即自动运行另外一段sql代码创建触发器语法#针对插入createtrigg 查看详情

创建返回具有复杂 SQL 的表的 Oracle 视图或过程,是不是可能以及如何?

】创建返回具有复杂SQL的表的Oracle视图或过程,是不是可能以及如何?【英文标题】:CreatingOracleVieworProcedurethatreturnsatablewithcomplexSQL,isitpossibleandhow?创建返回具有复杂SQL的表的Oracle视图或过程,是否可能以及如何?【发布时间】... 查看详情

仅针对特定视图禁用手势识别器

】仅针对特定视图禁用手势识别器【英文标题】:Disablegesturerecognizeronlyforaparticularview【发布时间】:2013-02-0812:27:38【问题描述】:在一个视图控制器上,我有一个mainView。在那个视图中,我有另一个视图sidePanel,它的帧为0,0,86,42... 查看详情

plsql表更新后视图未更新

...通过该视图来更新数据。在这种情况下,在数据库侧,将针对视图的DML语句(INSERT、UPDATE、DELETE)自动转换成表的DML语句,来更新数据。但是,对于定义的复杂视图,DML语句无法在数据库侧转换成表的DML语句,因此会发生错误。... 查看详情

#夏日挑战赛#数据库学霸笔记(下)~

...,可以方便地重用它而不必知道他的基本查询细节。使用表的组成部分而不是整个表。保护数据。可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。更改数据 查看详情

SQL Server 是不是在复杂视图中传播 WHERE 条件?

】SQLServer是不是在复杂视图中传播WHERE条件?【英文标题】:DoesSQLServerpropagateWHEREconditionsincomplexviews?SQLServer是否在复杂视图中传播WHERE条件?【发布时间】:2011-08-2422:43:03【问题描述】:我已经用一个完整的例子来跟踪这个问题... 查看详情