Data Warehouse Guide文件筆記(三):RELY constraints

asword發表於2009-02-09
作者: NinGoo(http://ningoo.itpub.net)
發表於: 2006.10.22 21:18
分類: DW&BI
出處: http://ningoo.itpub.net/post/2149/223139
---------------------------------------------------------------[@more@]

既然我們已經可以確定資料倉儲中的資料是一致的,那麼應該就沒有必要再在表上建constraint了,constraint對DML或者load操作是有效能影響的,能不用當然不用的好。但是,雖然表中的資料實際上一致了,oracle自己卻不知道,最佳化器也不知道。在查詢重寫(query rewrite)時,很多時候需要知道資料之間的約束,而在資料倉儲中,查詢重寫對效能的影響相當大。

為了告訴oracle,資料應該符合某種一致性條件了,而又不想建立的constraint其作用,就可以建立型別為RELY的constraint,也就是一種可以讓oracle知道這些資料是符合這些約束的,但這個約束本身卻是沒有其實際作用的約束。

文件中給出了一個例子:

ALTER TABLE sales ADD CONSTRAINT sales_time_fk
FOREIGN KEY (time_id) REFERENCES times (time_id)
RELY DISABLE NOVALIDATE;

可以看到這個constraint的狀態是disable novalidate的,也就是它實際上是不起約束作用的,只是告訴oracle最佳化器,這裡的資料是符合這麼一個約束條件的。

另外,在檢視上也是可以建constrain的,不過只能是RELY constraint

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-1017040/,如需轉載,請註明出處,否則將追究法律責任。

相關文章