0

已经了解索引对选择查询很有用..

我需要从 s 表的列更新 t 表中的某些列..两个表都包含数百万行..在ArrivalYrMonth[Generated Record Identifier]列上创建索引是否很好,请参阅下面的查询?

还是我需要在更新之前删除这些索引?

我是否必须删除 t.colmn1,t.colmn1,t.colmn1,t.colmn1 上的索引

UPDATE t
SET      t.clmn1=s.clmn1
       , t.clmn2=s.clmn2
       , t.clmn3=s.clmn3
       , t.clmn4=s.clmn4
FROM [AxE_Data] t
INNER JOIN [Tg-DB].[dbo].[AxE_Stg_Data] s
    ON t.[Generated_Record_Identifier] = s.[Generated Record Identifier]
WHERE [ArrivalYrMonth] IN ('201204', '201205', '201206')

请让我知道建议....

4

1 回答 1

0

您不需要删除它并重新创建它。使用这些命令重建索引

    DBCC SHOWCONTIG (TABLE_NAME)--To show your table fragmentation 
    DBCC INDEXDEFRAG (0,TABLE_NAME,'INDEXNAME')
    DBCC DBREINDEX (TABLE_NAME, INDXNAME,0 );

更多详情,请参考http://technet.microsoft.com/en-us/library/ms175008.aspx

于 2013-08-21T09:48:55.843 回答