[SQL] SSMS 如何開啟產生索引指令碼選項 (HOW TO:Open SSMS Create Index Command Option)
筆者進日在轉移 Table Schema 時,發生使用 SSMS 產生指令碼時,未產生索引指令碼資訊,由於若未將索引指令碼新增於新 Database
將會導致索引執行效能上之問題,故在此提出解決方式。
若您也有此問題,可依下列步驟進行 SSMS 進階選項調整:
1. 開啟 SQL Server Management Studio (SSMS)。
2. 選擇 [工具] --> 點選 [選項]。
3. 開啟 [SQL Server 物件總管] 選項 --> 點選 [指令碼]。
4. 於右方選擇 [編寫索引的指令碼] --> 選擇 [True] (預設為 False)。
筆者進行以下些實驗,若您想進一步了解該選項影響範圍,請對以下內容進行了解:
1. 請將上述 [編寫索引的指令碼] 調整為 False。
2. 請依以下圖型新增 Table,並將該 Table Name 設定成 Test。
3. 對 Test Table 開啟 [設計] 介面,並將 AA 欄位設定為 [主索引鍵]。
4. 產生指令碼時,得知會產生 [主索引鍵] 資訊如下:
1: CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED
2: (
3: [AA] ASC
4: )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
5. 對 Test Table 開啟 [索引/索引鍵] 管理介面,並將 BB 欄位設定為 [唯一索引鍵]。
6. 產生指令碼時,得知會產生 [唯一索引鍵] 資訊如下:
1: CONSTRAINT [IX_Test_BB] UNIQUE NONCLUSTERED
2: (
3: [BB] ASC
4: )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
7. 對 Test Table 開啟 [索引/索引鍵] 管理介面,並將 CC 欄位設定為 [索引] 且為 [非唯一]。
8. 產生指令碼時,無法取得 [索引] 且為 [非唯一] 資訊。
9. 對 Test Table 開啟 [索引/索引鍵] 管理介面,並將 DD 欄位設定為 [索引] 且為 [唯一]。
10. 產生指令碼時,亦無法取得 [索引] 且為 [唯一] 資訊。
11. 依本文內容將 [編寫索引的指令碼] 調整為 True。
12. 再進行產生指令碼時,皆可取得 [索引] 且為 [非唯一] 或 [唯一] 資訊如下:
[索引] 且為 [非唯一]
1: CREATE NONCLUSTERED INDEX [IX_Test_CC] ON [dbo].[Test]
2: (
3: [CC] ASC
4: )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
[索引] 且為 [唯一]
1: CREATE UNIQUE NONCLUSTERED INDEX [IX_Test_DD] ON [dbo].[Test]
2: (
3: [DD] ASC
4: )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
由以上實驗可得知,若您亦有此需求時可將 [編寫索引的指令碼] 調整為 True,
但請注意,當您將產生之指令碼於新 Database 上執行前,需將使用的 Database Name 進行修改。
(Ex:USE [Test_Before] 修改為 USE [Test_After])