Sql-Server

SQL Server 中的聚集索引與 Oracle 中的索引組織表

  • February 8, 2013

我作為數據庫開發人員正在從 SQL Server 過渡到 Oracle,並且已經在這裡找到了一些很棒的資源(如何從 SQL Server DBA 過渡到 Oracle?作為 DBA ,我將如何從 Oracle 過渡到 SQL Server ? ) 但我很難找到有關在 Oracle 中使用索引組織表的好資訊。

在我以前的生活中,我們在我們的 OLTP-ish 數據集市中廣泛使用 SQL Server 中的聚集索引並取得了巨大成功。索引組織表是 Oracle 中的一個方便的工具嗎?

如果您要從 SQL Server 過渡到 Oracle,我建議您首先嘗試堆表,因為它們是在 Oracle 中儲存數據的標準形式。對於大多數工作負載, Oracle 中具有正常索引的堆表是 DML 和查詢性能方面最平衡的儲存形式。

如果以後你發現你有性能問題或瓶頸,你應該研究專門的高級儲存方法,如 IOT、分區、集群、反向鍵索引等。

特別是關於物聯網,我建議不要將它們廣泛使用,因為作為初學者,您可能不想進入很多“陷阱”:

  • IOT 沒有真正的 rowid(因為本身沒有表)。
  • 因此,IOT 上的二級索引沒有指向行的真正指針,而只是猜測,這可能導致索引掃描效率低下。
  • IOT 上禁用了某些功能,例如虛擬列表壓縮、複合分區。
  • 您必須在創建時決定在哪裡儲存非索引列(內聯或溢出段),這可能會導致某些查詢的性能下降。

Oracle 中的 IOT 與 SS 中的聚群索引不太一樣,因為 Oracle 統計資訊包括行的物理分散,而 SS 在其統計資訊中不包括物理位置。有關更多資訊,請參閱 Lewis 和 Friitchey 關於 Oracle 和 Sql Server 中的統計數據的辯論。( http://www.red-gate.com/products/oracle-development/deployment-suite-for-oracle/education/webinars/webinar-statistics-oracle-sql-server-jonathan-lewis ) 這就是為什麼集群SS 中的索引比堆好。聚集索引將物理位置數據添加到統計資訊中。當您知道索引提供將要搜尋的數據行的託管時,IOT 是很好的,例如 order_date 上的索引和訂單表的 customer 將成為一個很好的 IOT。

引用自:https://dba.stackexchange.com/questions/34236