2009-07-11 62 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提出建議步驟。

我懷疑你會發現結果存在結構差異。

相關問題