2009-07-11 45 views
4

当我运行SQL Server 2005数据库优化顾问时,它提供了一个建议来创建一个索引,但它会建议索引一个已经有索引的列。为什么它会建议再次创建相同的索引?数据库优化顾问建议创建一个现有索引

这里是我的SQL:

SELECT t.name AS 'affected_table' 
    , 'Create NonClustered Index IX_' + t.name + '_' 
    + CAST(ddmid.index_handle AS VARCHAR(10)) 
    + ' On ' + ddmid.STATEMENT 
    + ' (' + IsNull(ddmid.equality_columns,'') 
    + CASE 
    WHEN ddmid.equality_columns IS NOT NULL 
      AND ddmid.inequality_columns IS NOT NULL 
    THEN ',' 
    ELSE '' 
    END 
    + ISNULL(ddmid.inequality_columns, '') 
    + ')' 
    + ISNULL(' Include (' + ddmid.included_columns + ');', ';') 
    AS sql_statement 
    , ddmigs.user_seeks 
    , ddmigs.user_scans 
    , CAST((ddmigs.user_seeks + ddmigs.user_scans) 
    * ddmigs.avg_user_impact AS INT) AS 'est_impact' 
    , ddmigs.last_user_seek 
FROM 
    sys.dm_db_missing_index_groups AS ddmig 
    INNER JOIN sys.dm_db_missing_index_group_stats AS ddmigs 
    ON ddmigs.group_handle = ddmig.index_group_handle 
    INNER JOIN sys.dm_db_missing_index_details AS ddmid 
    ON ddmig.index_handle = ddmid.index_handle 
    INNER Join sys.tables AS t 
    ON ddmid.OBJECT_ID = t.OBJECT_ID 
WHERE 
    ddmid.database_id = DB_ID() 
    AND CAST((ddmigs.user_seeks + ddmigs.user_scans) 
    * ddmigs.avg_user_impact AS INT) > 100 
ORDER BY 
    CAST((ddmigs.user_seeks + ddmigs.user_scans) 
    * ddmigs.avg_user_impact AS INT) DESC; 
+0

您能否提供您当前的索引结构(即索引构建语句的脚本)和DTA提出的建议的详细信息。我怀疑你会发现他们是不同的。 – 2009-07-12 09:34:25

+0

[为什么SQL Server 2005动态管理视图报告缺少索引时,它不是?](http://stackoverflow.com/questions/305524/why-does-sql-server-2005-dynamic-management- view-report-a-missing-index-when-it) – 2013-12-27 19:32:22

回答

0

您可能需要运行您的查询和建议已经存在的指数。

SELECT * FROM table WITH INDEX(IX_INDEX_SHOULD_BE_USED) WHERE x = y 

那里的索引可能不会被认为对SQL Server有用。运行建议需要索引的查询并查看SQL Server中的执行路径,然后构建其他需要的索引。

+0

我不认为海报是说他的查询不使用索引。他说,sql server建议他生成一个针对特定表的索引。问题是,这张桌子上已经有了一个索引,对这些领域(他认为)。 – 2009-07-11 14:26:41

0

请您列出完整索引缺失警告信息吗?通常,它要求在表上创建一个索引但只返回某些字段,而不是表中的索引,默认情况下它将返回所有字段。

0

来吧,脚本既出您当前指数strucutre的详细信息,然后比较这对由DTA提出建议步骤。

我怀疑你会发现结果存在结构差异。