问题标签 [filtered-index]

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 投票
1 回答
273 浏览

sql-server-2008 - SQL Server 2008 中的筛选索引

我在我的一个数据库表中创建了过滤的唯一索引。根据我的研究,如果我想从 asp.net 对该表进行任何操作,我需要打开以下设置操作到我的连接

如果我打开上述功能,会产生什么效果?它会导致任何问题吗?还有其他更好的选择吗?

提前致谢

0 投票
2 回答
2327 浏览

sql-server - 过滤索引与普通非聚集索引

我在一个表中有 2.7 亿条记录。目前我在日期列上有一个非聚集索引。99% 的时间我使用日期 > 2008 年 1 月 1 日的行......这意味着其中有 1.4 亿。我正在使用 SQL Server 2008。在这种情况下,使用过滤索引而不是普通的非聚集索引是否有益?

此外,如果我使用“日期”数据类型而不是“日期时间”,它有多大用处?

提前致谢 !

0 投票
1 回答
51 浏览

sql-server - 使用过滤索引内外的数据进行查询

如果我有一个过滤索引,并且如果我使用超出该范围的数据,会产生什么样的性能损失?

0 投票
4 回答
7382 浏览

sql-server - Oracle 有过滤索引的概念吗?

类似于 SQLServer,我可以在其中执行以下操作

0 投票
1 回答
473 浏览

filtered-index - SQLSERVER 2008 R2 使用过滤索引

是真的,使用过滤索引时 QUOTED_IDENTIFIER 将设置为 ON 吗?我知道在计算列上使用索引视图或索引时必须如此。

0 投票
2 回答
1649 浏览

sql - SQL 过滤索引:我是否应该始终对可选列的索引进行过滤?

对于“大”表,是否有任何理由不对可选列的索引进行过滤?

所以对于列 AAA 的索引(因为人们可以在 AAA 上搜索),
我可以将过滤器设置为([AAA] IS NOT NULL).
这样可以节省存储空间,因此可以节省资金。

technet的更多优势:

  • 提高查询性能和计划质量
  • 降低索引维护成本
  • 降低索引存储成本

人们说最好对大部分为空的列的索引进行过滤。但是为什么我不对空列的索引进行过滤,比如 1% 呢?如果它只有优点,有什么理由不做吗?

0 投票
3 回答
2855 浏览

sql-server-2008 - 优化器忽略过滤的索引条件

假设我正在运行一个显示有趣猫图片的网站。我有一个名为CatPictures、 和 列的表FilenameAwesomeness以及DeletionDate以下索引:

我的主要查询是这样的:

我作为一个人,知道上面的索引就是SQL Server所需要的,因为索引过滤条件已经保证了DeletionDate is null部分。

然而,SQL Server 不知道这一点;我的查询的执行计划不会使用我的索引:

查询计划,进行表扫描

即使添加索引提示,它仍然会DeletionDate通过查看实际表数据来显式检查:

使用索引但仍执行书签查找的查询计划

(此外还抱怨缺少包含 的索引DeletionDate)。

我当然可以

相反,它将起作用:

具有包含删除日期的索引的查询计划; 使用该索引

但是包含该列似乎是一种浪费,因为这只会占用空间而没有添加任何新信息。

有没有办法让 SQL Server 知道过滤条件已经在做检查工作DeletionDate

0 投票
1 回答
167 浏览

sql-server-ce - SQL Server Compact 筛选索引

任何版本的 SQL Server Compact 都支持筛选索引吗?

0 投票
1 回答
1493 浏览

tsql - 是否可以使用过滤索引作为提示来优化 SELECT COUNT(*) 查询以实现恒定速度?

我想计算所有不紧急且订单状态 = 1(已发货)的订单。

这应该是一个非常简单的优化查询。我想在 Orders 表上放置一个简单的过滤索引来覆盖这个查询,使其成为一个恒定的时间/O(1) 操作。但是,当我查看查询计划时,它似乎使用了没有意义的索引扫描。理想情况下,此查询应该只返回索引中的项目数。

该表如下所示(简化为本质):

我创建了这个过滤索引:

现在,当我执行此查询时:

我看到查询计划正在使用 IX_Orders_ShippedNonUrgent,但它正在执行索引扫描并在约 150,000 行订单中执行大约 200 次读取。

假设过滤的索引保持最新,是否可以始终让此查询在恒定时间内运行?理想情况下,它应该只执行 1 次读取来获取索引的大小。

如果我切换到这样的非过滤索引:

查询计划使用 Index Seek,但仍然执行比回答这个简单查询所需的更多的读取。

更新

我能够做到这一点

并在 9 次读取中获得结果,但似乎应该有一种更简单、更简单的方式来使用简单的 COUNT(*) 查询。

0 投票
4 回答
4880 浏览

sql-server-2008 - SQL Server 2008 上的筛选索引删除/插入失败?

我创建了一个具有默认设置的存储过程,例如:

没事。然后我在一个表上为 DB 中的非空值创建了一个过滤的唯一索引,然后我不能再在 SQL Server Management Studio 中运行任何存储过程。我得到的错误是这样的:

DELETE(或 INSERT)失败,因为以下 SET 选项的设置不正确:'ANSI_NULLS,QUOTED_IDENTIFIER'。验证 SET 选项对于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作是否正确。

我尝试运行存储过程,例如:

或者

我仍然得到上述错误。我很困惑。如何解决这个问题?