2012-12-06 75 views
0

背景:表格有大約200米行55GB。索引名稱是否有關係,即它們是否在表格中更改?

我需要做一個行復制到一個重複的表,但有一個BIGINT標識,當然當從原始表生成腳本到CREATE時,它會保留所有的一切,包括表名,INT的PK值,和主鍵約束 - 所有這些都需要改變。

我的問題是,如果我更改了PRIMARY KEY CONSTRAINT名稱,並且不要將其更改回來,它會把事情搞砸嗎?可能存儲過程或直接命令直接調用這個約束,作爲索引或其他東西?如果以後需要重新命名,那是一個瞬間過程還是長期過程,如此大的表格?

我不認爲它對其他索引很重要,因爲我應該將它們放在原始表格上,然後重新創建新的表格,對吧?

還有一個問題:在這個尺寸的表 - 和高容量系統,在考慮性能,我應該重新考慮改變以下任意值?:

WITH (
    PAD_INDEX = OFF, 
    STATISTICS_NORECOMPUTE = OFF, 
    IGNORE_DUP_KEY = OFF, 
    ALLOW_ROW_LOCKS = ON, 
    ALLOW_PAGE_LOCKS = ON, 
    FILLFACTOR = 95 
) ON [PRIMARY] 

回答

4

指數名稱通常不在編程API中直接引用。沒有「從索引中選擇」和「插入到索引」語法,所有內容都引用表對象。儘管索引名稱很少暴露,例如table hints

但是,您可能具有管理/維護腳本/作業,以瞭解物理佈局(即索引和約束名稱)。

+0

我猜測搜索整個服務器索引名稱的參考過程將是不可能或不切實際的。建議的過程是否會[1]在table_new上創建具有不同名稱的索引[2]將停機時間[3]放在table_old上的下標索引[4]將table_new上的索引重命名爲其原始名稱以及[5]切換表名稱?你會以不同的順序放置這些步驟嗎? – 333Matt

+0

我發現索引名不一定是唯一的,除了PK。所以我能夠在系統聯機時在新的桌面上構建它們。只需快速脫機即可複製舊錶格中的最後一部分數據,放棄其「PK」,並重新命名新表格及其「PK」。 – 333Matt

相關問題