如果我沒有弄錯聚簇索引根據一些自定義順序在磁盤上物理排序表的行。我假設表格存儲在文件中(也許每個表格有一個文件?)。那麼不過,假設有人在表格中插入一個「新行」,並且應該放置在開始處。數據庫然後需要在文件中物理地移動整個表格(所有行)?是不是太慢或有沒有任何優化技術如何在插入後實現排序順序?插入聚簇索引表
插入聚簇索引表
回答
表格不一定存儲爲文件。從邏輯上講,它們存儲在頁面中。假設每個頁面有100行,並且在需要時可以保存額外的20行。然後將所有頁面鏈接在一起以製作整個表格數據。
就你而言,當你在開始時添加一個新行時,只需更改第一頁,只需移動100行。如果您一遍又一遍地執行該操作,那麼當該頁面的行數超過120時,該頁面將被拆分爲兩個鏈接在一起的新頁面。
是啊,你是對的,我的錯誤。 – 2012-07-22 15:17:26
我只想補充一下。 。 。 「表格不一定存儲爲文件」。數據庫可以存儲不管他們喜歡的表,並且一些支持SQL的數據庫可能會選擇將表放入文件中。大多數不這樣做,但這是編寫引擎的人的設計決定。 – 2012-07-22 16:13:02
好點。當然,任何數據庫都可以將表格保存到文件。我對這個問題給出了一個總體的看法。但在大多數情況下以及大多數DBMS(如Oracle,DB2或SQL服務器)中,它都是這樣的:行 - >頁 - >表 - >文件或磁盤。根據你的觀點,我會編輯我的回覆。 – 2012-07-22 19:14:11
- 1. 聚簇索引和非聚簇索引
- 2. 聚簇索引
- 3. 具有非聚簇索引但沒有聚簇索引
- 4. 非主鍵列上的聚簇索引或非聚簇索引?
- 5. 改變聚簇索引列
- 6. SQL Server非聚簇索引
- 7. 瞭解聚簇索引
- 8. 全文索引vs %%和聚簇索引
- 9. SQL空間索引和聚簇索引
- 10. 帶聚簇索引的文件表
- 11. 聚簇索引或分區表?
- 12. 應將主鍵聚簇索引列添加到非聚簇索引中?
- 13. SQL Server性能:非聚簇索引+ INCLUDE列與聚簇索引 - 等效嗎?
- 14. 儘管有聚簇索引,SQL Server仍在使用非聚簇索引
- 15. 如何執行非聚簇索引查找而不是聚簇索引掃描
- 16. 混淆了聚簇索引和非聚簇索引。包含5個疑問
- 17. 聚簇索引掃描而不是聚簇索引尋求左連接
- 18. 保存B +樹的聚簇索引和非聚簇索引的位置?
- 19. 如何用非聚集索引查找或聚簇索引查找替換聚簇索引掃描?
- 20. SQL Server「一次寫入」表聚簇索引
- 21. 插入排序的數據到一個表與非聚簇索引
- 22. 將已排序的數據插入到具有聚簇索引的表中
- 23. 在nhibernate中設置聚簇索引
- 24. 聚簇索引內部結構
- 25. SQL服務器行不聚簇索引
- 26. SqlServer聚簇索引存儲(> 1列)?
- 27. Sybase非聚簇索引選擇
- 28. 更改sybase中的非聚簇索引
- 29. Azure無法識別聚簇索引
- 30. 並行SQL Server聚簇索引創建
什麼RDBMS? SQL Server? – 2012-07-22 15:08:26
如果您正在談論** SQL Server ** - 那麼數據將以8K頁的形式保存在一個平衡的b-tree結構中。在表格中插入新行的位置幾乎是不相關的 - 可能或可能不需要執行某些步驟,但它肯定是**而不是「順序」文件類結構,需要轉移到當插入一個新行時......回到 – 2012-07-22 15:59:19