我管理SQL Server 2008 R2單實例服務器。我有一張桌子是我最大的桌子,也是我用得最多的桌子。它基本上是一個事件表,每天記錄大約40萬個事件,並保存13個月的歷史。SQL Server最佳實踐 - 如何管理大型多用表上的索引
爲了這個解決方案,改變這張表或其中的數據的設計不是一個選項。因爲該表是
- 巨大的(135萬條記錄,41 GB的大小)
- 使用場組合的衆多
- 使用一致的結構查詢,查詢都通過工具查詢,以及即席查詢
- 重要的是查詢要相對快
管理這張表上的索引一直是熊。
該表當前有1個聚簇索引(int標識字段上的PK)和23個非聚簇索引。 Total Index存儲量爲372 GB,比表格本身大9倍。該表每天更新一次,然後所有其他活動都是「SELECT」語句。大多數在WHERE子句中使用的字段都是varchar(50)字段,並且還有一些datetime字段。
在性能方面,該表的查詢很快在幾乎所有情況,所以沒有抱怨那裏......
ASK:
我只是不知道是否有索引此表以一種更好的方式讓它更「通用」,以支持多種查詢方式,而不佔用太多磁盤空間......想法?在這樣的情況下尋找一些高層次的理論或一般最佳實踐。
這取決於您在此表上運行的查詢組合,因爲您表示,此表每天只更新一次,您可以創建不同的索引組合,查看您是否獲得了所需的輸出。沒有看到需要,除非你看到一些問題,你需要試圖快速查詢 – TheGameiswar
有多少列?到目前爲止,您的索引策略有哪些? – SQLChao
@ TheGameiswar - 我的關注更多的是索引存儲的增長......這個表經常被查詢,而當查詢花費的時間比預期更長時,我聽到了這個消息。 :-)修補它並不是最理想的。我只是在我的存儲空間接近最大的時候(不能證明SAN給老闆的成本,並且已經在服務器上獲得了最大的內部存儲空間)。所以我必須開始注意我添加的索引。試圖看看我是否需要專門改變我的方法。 –