sql數據庫使用教程「sqlserver創建索引語句」

舉例,小編要對SPKFK這個表進行索引優化.

(備註:spkfk 為tahq數據庫的表,表內的約束為pk_spkfk)

先用 DBCC showcontig (‘spkfk’) 來查看一下基本信息.得出如下圖所示SQL server DBCC 三個命令簡單優化數據庫索引

方法一:用 DBCC INDEXDEFRAG (tahq,’spkfk’,pk_spkfk) 對索引的葉級進行碎片整理,以便頁的物理順序與葉節點從左到右的邏輯順序相匹配,因此可提高索引掃描性能。

方法二: 用DBCC DBREINDEX (‘spkfk’) 重新生成表的一個索引或為表定義的所有索引。通過允許動態重新生成索引,可以重新生成強制 PRIMARY KEY 或 UNIQUE 約束的索引,而不必刪除並重新創建這些約束..

優化後截圖如下:

SQL server DBCC 三個命令簡單優化數據庫索引

OK.收工走人….

當然這只是簡單的單表索引優化.

下面奉送兩個更加實用的命令:

1,DBCC DROPCLEANBUFFERS:從緩衝池中刪除所有緩存,清除緩衝區

(注意的是這個命令只移走乾淨的緩存,不移走臟緩存。由於這個原因,在執行這個命令前,應該先執行CheckPoint,將所有髒的緩存寫入磁盤).

2,DBCC ErrorLog :如果很少重啟mssqlserver服務,那麼服務器的日誌(不是數據庫事務日誌)會增長得很快,而且打開和查看日誌的速度也會很慢.(送給懶人的福利哈,小編就常用這個命令.)

ps:奉送掃描後各項參數的詳解:

  1. Page Scanned-掃描頁數:如果你知道行的近似尺寸和表或索引里的行數,那麼你可以估計出索引里的頁數。看看掃描頁數,如果明顯比你估計的頁數要高,說明存在內部碎片。
  2. Extents Scanned-掃描擴展盤區數:用掃描頁數除以8,四捨五入到下一個最高值。該值應該和DBCC SHOWCONTIG返回的掃描擴展盤區數一致。如果DBCC SHOWCONTIG返回的數高,說明存在外部碎片。碎片的嚴重程度依賴於剛才顯示的值比估計值高多少。
  3. Extent Switches-擴展盤區開關數:該數應該等於掃描擴展盤區數減1。高了則說明有外部碎片。
  4. Avg. Pages per Extent-每個擴展盤區上的平均頁數:該數是掃描頁數除以掃描擴展盤區數,一般是8。小於8說明有外部碎片。
  5. Scan Density [Best Count:Actual Count]-掃描密度[最佳值:實際值]:DBCC SHOWCONTIG返回最有用的一個百分比。這是擴展盤區的最佳值和實際值的比率。該百分比應該儘可能靠近100%。低了則說明有外部碎片。
  6. Logical Scan Fragmentation-邏輯掃描碎片:無序頁的百分比。該百分比應該在0%到10%之間,高了則說明有外部碎片。
  7. Extent Scan Fragmentation-擴展盤區掃描碎片:無序擴展盤區在掃描索引葉級頁中所佔的百分比。該百分比應該是0%,高了則說明有外部碎片。
  8. Avg. Bytes Free per Page-每頁上的平均可用字節數:所掃描的頁上的平均可用字節數。越高說明有內部碎片,不過在你用這個數字決定是否有內部碎片之前,應該考慮fill factor(填充因子)。
  9. Avg. Page Density (full)-平均頁密度(完整):每頁上的平均可用字節數的百分比的相反數。低的百分比說明有內部碎片。
  10. 通過對掃描密度(過低),掃描碎片(過高)的結果分析,判定是否需要索引重建。

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/268227.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-16 13:08
下一篇 2024-12-16 13:08

相關推薦

發表回復

登錄後才能評論