有人知道在sql server 2000中使用了什么假设索引吗?我有一个包含15个以上索引的表,但不知道它们是为什么创建的。他们可以减慢删除/插入吗?

有帮助吗?

解决方案

假设索引通常在您运行索引调整向导时创建,并且是建议,在正常情况下,如果向导运行正常,它们将被删除。

如果留下一些可能会导致一些问题,请参阅此链接有关删除它们的方法

其他提示

不确定2000年,但在2005年,假设索引和数据库对象通常是 DTA(数据库调优顾问)

创建的对象

您可以通过运行此查询来检查索引是否是假设:

SELECT  *
FROM    sys.indexes
WHERE   is_hypothetical = 1

如果您已经为调优顾问提供了基于其索引策略的良好信息,那么我会说它通常会信任其结果,但是如果你当然应该检查它是如何在盲目信任它之前分配它们的。每种情况都会有所不同。

谷歌搜索<!>“sql server假设索引<!>”;返回以下文章作为第一个结果。引用:

  

假设索引和数据库对象通常只是由DTA(数据库调优顾问)创建的对象

假设索引是由Database Tuning Advisor生成的索引。一般来说,索引太多并不是一个好主意,你应该检查你的查询计划,以修剪那些没有使用的索引。

来自 sys.indexes

is_hypothetical     bit     

1 = Index is hypothetical and cannot be used directly as a data access path. 
    Hypothetical indexes hold column-level statistics.

0 = Index is not hypothetical.

也可以使用未记录的WITH STATISTICS_ONLY

手动创建它们
CREATE TABLE tab(id INT PRIMARY KEY, i INT);

CREATE INDEX MyHypIndex ON tab(i) WITH STATISTICS_ONLY = 0;
/* 0 - withoud statistics -1 - generate statistics */

SELECT name, is_hypothetical
FROM sys.indexes
WHERE object_id = OBJECT_ID('tab');

scroll top