问题标签 [indexed-views]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
900 浏览

sql-server - 在 Sql Server 2008 中索引视图是否实际上复制了原始数据?

如果我创建一个索引视图(在 Sql Server 2008 中),这是否意味着我将所有需要的数据从源表复制到一个单独的新表中?还是只保存了一些微小的指针/索引来表示这个视图?

0 投票
1 回答
5916 浏览

sql-server-2008 - 创建视图时出错 - [dbo].[someFunction] 未绑定架构

创建视图时出现此错误:“无法架构绑定视图 'dbo.viewStock'。'dbo.GetStockCurrentQuantityByProduct' 未绑定架构。”

背景:我真正想要实现的是提高检索产品 ID/当前库存的查询速度。当前库存由计算特定产品的入库/出库的函数('dbo.GetStockCurrentQuantityByProduct')计算得出。我正在探索一种可能的解决方案 - 创建一个索引视图来保存产品 ID 和当前库存,因此我可以直接从中选择以加快查询执行速度:

当我执行此操作时,我收到错误:

0 投票
2 回答
4333 浏览

sql - sql中的分区视图

如何在 MS-SQL 中对索引视图进行分区?我创建了一个存储值范围的索引视图。视图定义如下

现在我想使用日期列对该表进行分区。我怎么做 ?

0 投票
2 回答
447 浏览

sql - 加入表的 CTE 转换

我经常遇到这样的情况,我需要将一个大表加入到表的某个转换中。

我用一张大桌子和一张较小的价格表做了一个例子。

输入表格 CarPrices,其中包含每个汽车品牌/型号的价格以及开始和结束日期。我想将所有售出的汽车加入 CarPrices 表中的销售价格,在 PriceStartingDate 和 PriceEndingDate 之间的标准 SaleDate 上,但如果该期间没有价格,我想加入找到的最新价格。

我可以像这样完成它,但它非常慢:

一种更快的可靠方法是忘记创建 VIEW 并创建存储过程,我首先将较小的价格表准备为具有正确聚集索引的临时表,然后对其进行连接。这要快得多。但我想坚持一个观点。

有什么想法吗...?

0 投票
1 回答
1920 浏览

c# - 支持索引视图的会话设置

我在我的数据库中使用索引视图。所以客户端应该有一些会话连接设置来调用它们。我正在使用 ado.net 连接,命令来调用存储过程。每次我必须调用存储过程时,我都会创建连接(我希望连接池允许我快速执行此操作)并执行命令以将这些设置应用于当前连接。

其他想法:在每次调用存储过程之前添加这些设置:

此解决方案会导致一些性能问题,不是吗?

如果我每次都必须创建一个新连接,我该如何避免额外的工作?如何自动应用这些设置?

解决方案:

0 投票
0 回答
204 浏览

sql-server-2008 - 索引无法在 SQL Server 中索引的视图的低维护替代方案?

我试图索引我的视图,因为数据是相对静态的,它可以提高性能。

我无法索引视图,因为它包含“排名或聚合窗口函数”。有解决方法吗?

这个视图只是在学生对问题的回答中添加了一个尝试次数,我认为这对于索引视图来说是一个完美的场景,但是 SQL Server 不支持对具有窗口函数的视图进行索引。

我可以手动生成一个缓存表,但我希望这是低维护的,所以我不必记住做这样的事情:

例如,也许我可以创建某种触发器(我不熟悉触发器),当基表更改时将视图插入缓存表......这基本上是视图上的索引应该做的事情在底层(虽然效率更高,因为它可以更新索引而不是在基表数据更改时完全替换它)。

0 投票
3 回答
1441 浏览

sql - 查看聚集索引查找超过 50 万行需要 7 分钟

看看这个执行计划:http
://sdrv.ms/1agLg7K 不是估计的,是实际的。从大约30 分钟的实际执行中。

选择第二条语句(占用总执行时间的 47.8%——大约 15 分钟)。
查看该语句中的顶部操作 – View Clustered Index Seek over _Security_Tuple4。该操作花费了语句的 51.2%——大约 7 分钟。

该视图包含大约 0.5M 行(作为参考,log2(0.5M) ~= 19 - 考虑到索引树节点大小为 2,仅 19 步,实际上可能更高)。
该运算符的结果是零行(与估计不匹配,但暂时不要介意)。
实际执行 - 零。

所以问题是:哔哔声怎么可能需要七分钟?!(当然,我该如何解决?)


编辑关于我在这里问的一些澄清
我对一般性能相关的建议感兴趣,例如“查看索引”、“查看大小”、“参数嗅探”、“不同数据的不同执行计划”等。
我已经知道了所有这些,我可以做到所有这些分析我自己。

我真正需要的是知道什么会导致一个特定的聚集索引搜索如此缓慢,然后我可以做些什么来加快它

不是整个查询。
不是查询的任何部分。
只是一个特定的索引搜索。
结束编辑


还要注意第二个和第三个最昂贵的操作是如何分别在 _Security_Tuple3 和 _Security_Tuple2 上查找的,它们只需要 7.5% 和 3.7% 的时间。同时,_Security_Tuple3 包含大约 280 万行,是 _Security_Tuple4 的六倍。

另外,一些背景:

  1. 这是该项目中唯一一个行为不端的数据库。有几十个相同模式的其他数据库,它们都没有出现这个问题。
  2. 第一次发现这个问题时,发现索引99%是碎片化的。重建索引确实加快了速度,但并不显着:整个查询在重建前用了 45 分钟,在重建后用了 30 分钟。
  3. 在使用数据库时,我注意到像“select count(*) from _Security_Tuple4”这样的简单查询需要几分钟时间。怎么回事?!
  4. 然而,他们在第一次运行时只用了几分钟,然后就瞬间完成了。
  5. 问题连接到特定的服务器,也不连接到特定的 SQL Server 实例:如果我备份数据库然后在另一台计算机上恢复它,行为保持不变。
0 投票
1 回答
459 浏览

sql - sql server - 使用将行结果连接到 1 列的查询结果创建索引视图

我正在尝试这样做:将 多行连接成一个文本字符串?

我想让查询结果加入到其他表中。所以我想让 csv 查询成为索引视图。

我尝试使用 CTE 和 XML 查询来获取 csv 结果并使用这些查询创建视图。但是 SQL Server 阻止我在这些视图上创建索引,因为索引视图不允许 CTE 和子查询。

有没有其他好的方法可以将大型 CSV 结果集与其他表结合起来并仍然获得快速的性能?谢谢

0 投票
1 回答
78 浏览

sql - 简单 SQL 更新执行非常缓慢

SQL Server 2008 R2。

运行如下所示的简单更新命令

该查询仅更新 1 行,但耗时超过 2 秒。这是一个 2 属性表,用作多对多连接。表现在只有大约 300 条记录。主键 = 组和用户属性的复合键。

我已经设置了统计信息来检查它,并且查询执行涉及一堆其他不涉及业务的表:

我唯一能想到的是 foobar 是和索引视图,也许成本是花在维护它上,所以我检查了执行计划;它确实发挥了作用(但只有 11% 的成本)。

为什么需要 2+ 秒?

我在这里俯瞰什么?

执行计划建议我在事件上添加一个索引,但这里甚至不应该涉及事件,它只有 13% 的成本。

如果不是由于某种原因其他桌子被拉入其中,我觉得这应该是闪电般的快。

有人可能会给我关于索引视图增加一般数据库开销的明智建议;但是,所有其他操作如厕,对于更快地查找索引视图提供的某些查询来说,成本似乎相当高。

教我; 谢谢,麻烦您了!

XML 执行计划太大而不能作为文本发布,我没有看到附加选项,所以 pastebin 来救援: http: //pastebin.com/BgjBxLfc

0 投票
2 回答
187 浏览

sql - SQL Server 索引视图:无法在视图的 SELECT 语句中使用表达式

我正在尝试在 SELECT 语句中使用表达式来创建索引视图。根据索引视图的 MDSN 指南,如果表达式是确定性的,则可以使用它们。不幸的是,当我尝试在下面编写的视图上创建唯一聚集索引时,我收到如下所示的错误消息。我正在执行表达式的列已转换为整数数据类型,因此也不应该存在精度问题。知道为什么这个表达式不起作用吗?

无法在视图“..”上创建聚集索引“..”,因为视图的选择列表包含聚合函数或分组列的结果表达式。考虑从选择列表中删除聚合函数或分组列的结果表达式。

谢谢!