我想知道如果一個表或特別是與一個屬性上創建的聚集索引的堆文件對該屬性進行排序。是否有排序的堆文件和堆文件與聚簇索引之間的區別?具有聚簇索引的表的記錄是否在羣集關鍵字上物理排序?
2
A
回答
2
有排序的堆文件和堆文件與聚簇索引有區別嗎?
排序後的堆文件是一個堆(類似數組的結構),其元素排序。這是MyISAM
與ALTER TABLE … ORDER BY …
或PostgreSQL
一起用於CLUSTER
。在這樣的表格中插入一條新記錄會打亂訂單。
聚集索引是B-Tree
。插入新記錄可以保持訂單。
聚簇表中的記錄不一定是物理排序的(從某種意義上說,聚簇鍵的值較高的記錄在文件或表空間中具有較高的偏移量)。
相反,記錄,邏輯排列:您可以從一個記錄穿越到另一個以下B-Tree
鏈接(或在B+Tree
的情況下,頁面之間的直接鏈接),但是這仍然意味着隨機磁盤尋道因爲邏輯上鍊接的頁面並不必須在磁盤上彼此靠近。
有些數據庫,Oracle
例如,允許讀取物理順序不維護的邏輯順序,但帶來的好處或頁面順序訪問的速度更快,因爲索引(使用被稱爲INDEX FAST FULL SCAN
的操作)。
「沒有聚簇索引的堆文件」沒有這樣的事情:表組織是堆或聚簇。
相關問題
- 1. 聚簇索引是否真的改變了記錄的物理順序?
- 2. 非主鍵列上的聚簇索引或非聚簇索引?
- 3. 具有非聚簇索引但沒有聚簇索引
- 4. 使用聚簇索引重新排列表中的記錄
- 5. 羣集對物理和非聚集索引的數據進行排序嗎?
- 6. 將新行添加到具有聚簇索引的表時是否保留了行的物理順序?
- 7. 在已有聚簇索引的字段上放置非聚簇索引時,性能是否會提高?
- 8. 聚簇索引和非聚簇索引
- 9. 羣集索引和非聚簇索引 - SQL Server和Oracle?
- 10. 將已排序的數據插入到具有聚簇索引的表中
- 11. 是否可以在DB2 V9.7上擁有沒有任何聚簇索引的表?
- 12. 檢查表列上是否存在非聚簇索引
- 13. 插入記錄與聚集索引或沒有聚集索引
- 14. 聚簇索引
- 15. 具有重複值的列上的聚簇索引
- 16. 插入聚簇索引表
- 17. 將主鍵添加到具有現有聚簇索引的表中
- 18. 複合羣集PK行爲與非羣集PK +非唯一聚簇索引
- 19. 應將主鍵聚簇索引列添加到非聚簇索引中?
- 20. U-SQL表中的聚簇索引是否影響並行性?
- 21. 爲什麼主鍵不是聚簇索引和另一個索引是聚簇的?
- 22. 我可以擁有沒有聚集索引的主鍵嗎?我也可以擁有多值聚簇索引嗎?
- 23. 儘管有聚簇索引,SQL Server仍在使用非聚簇索引
- 24. 具有羣集GUID PK的SQL Server數據庫 - 切換聚簇索引或切換到順序(梳)GUID?
- 25. 帶聚簇索引的文件表
- 26. 聚集索引排序順序是否影響性能
- 27. 如何用非聚集索引查找或聚簇索引查找替換聚簇索引掃描?
- 28. 在不同排序方向的多列上的Sql服務器聚簇索引
- 29. 如何執行非聚簇索引查找而不是聚簇索引掃描
- 30. 聚簇索引掃描而不是聚簇索引尋求左連接
它取決於使用的數據庫和後端存儲。 (更新問題更具體的環境可能會產生更好的答案)。但通常用於聚類的關鍵字會影響物理數據的佈局。 – 2011-04-28 17:12:17