共用方式為


使用 DataConnection 與 TypedDataTable

在許多情況下,使用 DataConnection 可提供更佳的效能,並耗用比使用 TypedDataTable少的記憶體。 不過,在某些情況下可能需要 TypedDataTable ,因為使用 DataConnection的某些限制。 在某些情況下,使用 TypedDataTable 可能會產生比使用 DataConnection更好的效能。 本主題描述您在選擇正確方法時應該考量的準則和因素。

何時使用 TypedDataTable 而非 DataConnection

在下列情況下使用 TypedDataTable 代替 DataConnection:

  • 必須進行資料變更但資料表沒有主索引鍵。 若要使用 DataConnection進行資料變更,需要主鍵。 因此,如果沒有主鍵, TypedDataTable 是唯一可行的方法。

    注意

    規則引擎只會更新 TypedDataTable記憶體中的值。 由呼叫者決定這些變更是否為永久的。

  • 選擇性高時,即代表資料表中大部分的資料列都會通過規則條件所指定的測試。 在此情況下, DataConnection 不會提供許多好處,而且其效能可能會比 TypedDataTable更糟。

  • 資料表很小,通常一個資料表包含的資料列會少於 500 列。 請注意,根據規則圖形與規則引擎可用的記憶體而定,這個數字可能會更大或更小。

  • 預期在規則集中會有規則鏈結行為。 不支援在DataConnection上呼叫Update函式,但您可以使用協助程式方法在規則中叫用DataConnection.Update。 需要規則鏈結時, TypedDataTable 是較佳的選擇。

  • 資料表中一或多個資料行會保有規則不需要之非常大量的資料。 影像資料庫就是一個範例,影像資料庫中的資料行會存放影像 (大量資料)、名稱、日期等。 如果不需要影像,最好只選擇規則所需的資料行。 例如,發出「SELECT Name、Date from TABLE」這類查詢比使用 DataConnection更有效率。

  • 如果許多規則需要或更新相同的資料庫資料列,則使用 TypedDataTable,所有規則之間都會共用該資料列,而且如果條件是相同的 (,例如 Table.Column == 5) ,則可以優化條件評估。 一般而言,使用 DataConnection時,會針對使用 DataConnection的每個規則產生查詢。 雖然資料列會重複使用 (如果資料表有主索引鍵),每次都可產生多個查詢來取得相同的資料。

何時使用 DataConnection 而非 TypedDataTable

在下列情況下使用 DataConnection 代替 TypedDataTable:

  • 資料表包含大量的資料列,但選擇性很低,即只有少數的資料列符合規則條件。

  • 只有一個資料庫資料表是大的,規則中所使用的所有其他物件只擁有少數的執行個體。 在最壞的狀況下,對資料庫執行的查詢數目會等於規則中所使用之所有其他執行個體的產品。

  • 規則僅由連結的條件所組成,在這些規則中所使用的是資料庫資料表以外的物件。

另請參閱

商務規則引擎中的資料存取