我知道當我們用SQL Server主鍵創建一個表時,會自動創建一個聚集索引。但是,如果我從這個表中刪除一行,與此行相關的聚集索引是否仍然保留在索引表中,或者它會自動刪除?如果它沒有被自動刪除,我是否必須創建一個作業來重建和重新組織索引? (是限於MySQL,Oracle等一樣嗎?)SQL Server中的羣集索引
回答
Oracle或MySQL的默認值不相同。每個數據庫都有其自己的默認值及其特定功能。有些甚至對不同的含義使用相同的術語。
Oracle不默認爲聚集索引,而在Oracle中,等效索引組織表爲。在Oracle中,CLUSTER的定義是一個可以存儲2個或更多表並將它們排序相同的結構。
如果不是自動刪除,我是否必須創建一個作業到 重建和重新組織索引?
重建索引#1規則 - 衡量,測量,衡量。證明重建是有益的,否則除非事情發生變化,否則不要費心去做。
簡單刪除(或千)不是重建索引的自動原因。
如果您即將重建索引,您應該知道(1)前後訪問時間前後的數據塊數量(2)。
作爲一般的做法,索引重建有許多錯誤信息和迷信。您所指的索引是B-Tree結構。這些設計是可擴展的,O(日誌N)訪問。沒有證據表明索引必須在默認情況下重新組織。每個指標都是它自己的動物。 B樹指標在一段時間後達到停滯點(平衡),當你重建它們時,它們會壓縮它們(一件好事),但它們最終會回到停滯點。除非我在其中一個人身上發現性能/ IO問題,否則我會根據具體情況手動進行。
重建的兩個最大的優點:
- 更密集組合數據到更少的塊,從而提高了緩存和IO。
- 通過累積的實際數據對非聚簇索引進行重新排序。如果你的訪問模式總是連續的(包括插入),那麼這通常不是問題,塊將被排序。
Oracle和SQL Server是很棒的技術。沒有證據的情況下重建索引對於專業DBA來說並不合適。
爲了清楚起見,重建的意圖總是爲1.更加密集地將數據打包到更少的塊中,這樣可以改善緩存和IO.'您可能會爲插入等提供空間,這取決於您如何選擇聚簇索引該頁面拆分不是一個問題。這實際上與所描述的相反。我不是挑選,只是指出我實際遇到的用例。 – 2014-11-01 20:48:08
我知道,當我們創建一個SQLSERVER表的主鍵,將自動創建一個 聚集索引。
這隻有當它是默認選項或者將clustered指定爲關鍵字時纔是如此。主鍵也可以是非聚簇索引。
但是,如果我從該表中刪除一行,並與該行的索引表中仍然保留的聚集索引 或者 自動刪除?
如果它確實是一個聚集索引,那麼索引是表數據。如果你從表格中刪除了一些東西,它就消失了。有一些內部工作,例如幽靈記錄,但是數據不見了(從應用程序的角度來看)。
如果不是自動刪除,我是否必須創建一個作業到 重建和重新組織索引?
也就是說,還有其他背景任務可以處理某些「隱藏」功能。最終,當碎片(內部或外部)開始成爲問題時,您會希望重新組織或重建索引。這將取決於其他因素,包括表結構,接入等
(是限於MySQL,Oracle等一樣嗎?)
問題被標記的SQL Server,所以我回答SQL Server標記。這對於單個帖子來說是一個非常廣泛的問題。
- 1. 集羣索引SQL Server
- 2. SQL Server 2008中的羣集索引
- 3. SQL Server非集羣索引 - 包含值
- 4. SQL Server - 分區表與集羣索引?
- 5. SQL Server - 何時使用羣集與非羣集索引?
- 6. SQL Server:將羣集主索引更改爲非羣集
- 7. 羣集索引和非聚簇索引 - SQL Server和Oracle?
- 8. SQL Server中主鍵(集羣)和集羣唯一索引之間的區別
- 9. 集羣索引
- 10. SQL Server集羣
- 11. 標準版SQL Server中的羣集ColumnStore索引
- 12. 將集羣索引應用到SQL Server 2012中的視圖
- 13. SQL索引問題:爲什麼SQL Server更喜歡這個非集羣索引到一個集羣?
- 14. Sql Server執行計劃,非集羣索引掃描的開銷
- 15. SQL Server聚集索引 - 索引問題
- 16. SQL Server中的複合聚集索引
- 17. sql server中的非聚集索引
- 18. 爲什麼SQL Server會選擇「非羣集索引掃描」?
- 19. 非集羣式列存儲索引磁盤空間(SQL Server 2012)
- 20. SQL Server如何命令集羣索引表上的SELECT語句的結果集
- 21. 集羣的Identity Server 5.1.0與SQL Server
- 22. Microsoft Sync Framework不同步從SQL Server到SQL CE的非羣集索引DB
- 23. SQL Server切換羣集表
- 24. SQL Server羣集限制?
- 25. SQL Server地理羣集
- 26. 集羣索引列上的非集羣索引可提高性能?
- 27. K-means sql server中的Singelton集羣ssas
- 28. SQL Server的非聚集索引設計
- 29. 複合聚集索引和非聚集索引在sql server 2005
- 30. PostgreSQL中的羣集和非羣集索引
當然,聚集索引(像任何其他索引)不斷更新。這就是爲什麼太多索引可能比沒有索引更糟!有一個索引**總是**也承擔着維護它的重任! – 2014-10-26 18:03:58