gpt4 book ai didi

sql - SQL View 中未使用字段的性能

转载 作者:行者123 更新时间:2023-12-04 03:21:12 24 4
gpt4 key购买 nike

我正在使用 MS SQL Server。

当我定义数据库模式时,我定义了一个(非物化) View ,其中包括许多字段,例如如下(其中“主题”是表的名称, View 是自连接主题表):

CREATE VIEW View_Topic_Ancestor AS
SELECT
Subordinate.Id AS Subordinate_Id,
Subordinate.Folder_Id AS Subordinate_Folder_Id,
Subordinate.topicTitle AS Subordinate_topicTitle,
Subordinate.topicXhtml AS Subordinate_topicXhtml,
Subordinate.crossLinked AS Subordinate_crossLinked,
Superior.Id AS Superior_Id,
Superior.topicTitle AS Superior_topicTitle,
Superior.topicXhtml AS Superior_topicXhtml,
Superior.crossLinked AS Superior_crossLinked
FROM Topic AS Subordinate LEFT OUTER JOIN Topic AS Superior
ON Superior.Folder_Id = Subordinate.Folder_Id
AND
Superior.LeftValue = (SELECT MAX(Ancestor.LeftValue)
FROM Topic AS Ancestor
WHERE Subordinate.LeftValue > Ancestor.LeftValue
AND Subordinate.LeftValue < Ancestor.RightValue
AND Subordinate.Folder_Id = Ancestor.Folder_Id)

稍后(在运行时)我在 select 语句中使用此 View ,如下所示:

SELECT
T.Id AS Shared_Id,
V.Superior_Id,
V.Superior_topicTitle,
V.Subordinate_Id,
V.Subordinate_Folder_Id,
V.Subordinate_topicXhtml
FROM Topic AS T, View_Topic_Ancestor AS V
WHERE Folder_Id='e2eb2b68-738d-49ad-9787-a1e655b7973f'
AND T.crossLinked = V.Subordinate_Id

此 SELECT 语句不引用(不选择) View 中的许多字段:例如,它选择 Subordinate_topicXhtml 字段但不选择 Superior_topicXhtml 字段。

我的问题是:

1) 在 View 中定义但在 View 的运行时选择中未引用的字段是否对性能有很大影响?如果您愿意,假设 Superior_topicXhtml 字段包含大量数据(是一个很长的字符串)。

2) 我怎样才能自己验证这个问题的答案?测试(用秒表测量耗时)是唯一的方法,还是有可能根据理论获得答案?我正在为 Microsoft SQL Server 2008 和 SQL Express 使用“Microsoft Server SQL Management Studio”。我看到了如何获取(但还没有学会如何解释)这个查询的“估计执行计划”,但这只显示了正在发生的索引和循环,而不是是否从未引用的字段中检索数据。

最佳答案

查询优化器通过将定义 View 的 sql 与您构造的 sql 组合以从 View 中“选择”到单个 sql 查询中来创建查询计划。如果在这个组合优化的 sql 中,不需要任何特定属性(列),则不会使用它。具体来说,如果最终选择不需要它,则不会通过网络发送。此外,如果任何 Where 子句、Order By 或优化 sql 中的任何其他内容都不需要它,并且所有需要的属性恰好在索引中,那么该查询只能读取索引,而不会触及根本没有表...甚至认为他的 View 引用了索引中不存在的列...您可以通过查看查询的查询执行计划来看到这一点。

关于sql - SQL View 中未使用字段的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/398517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com