Excel服務器2010教程
  • 1.1 Excel服務器是信息系統工具
  • 1.2 用Excel服務器構建信息系統
  • 1.3 基于Excel服務器的信息系統架構
  • 1.4 如何學習使用Excel服務器
  • 2.1 安裝概述
  • 2.2 服務端安裝
  • 2.3 客戶端安裝
  • 2.4 Excel服務器的組成模塊
上一節 下一節

22.3 使用外部數據源中的表/視圖

外部數據源中的表或視圖被注冊了以后,有權限的設計者就可以在設計時使用它們。

能夠使用它們的場合包括:

  • 定義填寫規范
  • 定義表間公式
  • 在模板上映射數據表

 

Oracle外部數據源查詢優化

想獲得外部數據源中的數據,常見的做法是定義一個提數表間公式,用外部數據源的表作為來源表。

需要大家知道的是,Excel服務器所用的數據庫是SQL Server,所有對數據的讀寫功能,全部是在SQL Server 數據庫中執行,即使是讀取其它數據庫的外部數據源的數據,也是從SQL Server 中向其它數據庫發出一個查詢命令,其它的數據庫把查詢的結果返回給SQL Server,SQL Server再把結果反饋到界面上,我們就能看到查出的數據。通過SQL Server去查詢其它數據庫的數據,會有一個限制,就是利用不到其它數據庫中的索引,當外部數據源表中數據量很大時,查詢速度會比較慢。為了解決這個問題,針對Oracle 外部數據源,專門設計了查詢優化的功能。

當我們定義一個提數公式,其來源數據表選擇了Oracle外部數據源的表后,界面上可能會出現如下的選項:

“以Oracle 為外部數據源時,優化執行速度....”,如下圖所示。

oracle外部數據源查詢優化

圖中可見,執行速度有兩種可選的模式:普通模式和優化模式。當然優化模式執行速度更快,所以我們肯定愿意選擇優化模式。但是,要想選擇優化模式,您定義的表間公式必須同時滿足以下條件:

1)表間公式的來源數據,都是同一個oracle外部數據源中的表
2)篩選條件或填充方式中,不能用到:結算年、結算月、結算日等帶結算時間的函數,此集合函數。
3)篩選條件或填充方式中,不要用到“本報表.明細表.字段”

如果不能同時滿足以上條件,就不能選擇優化模式,只能選擇普通模式,相應地,也就達不到優化查詢速度的目的。至于為什么要滿足以上條件,涉及到具體的數據庫查詢處理方式,這里不細說,只說明一點,滿足這些條件保證了,所做的數據庫查詢只需要對Oracle 數據庫查詢,不需要對Oracle的表和SQL Server的表聯合查詢。 單純對Oracle 數據庫查詢,可以優化,而一旦需要對Oracle 的表和SQL Server的表做聯合查詢,就會受到 SQL Server 的制約,就無法做查詢優化。

這也提示了我們針對Oracle外部數據表定義提數公式時的一個原則,就是,讓提數公式做的事情盡量“單純”,寧可多寫幾條公式。 比如,我們自己做的Excel服務器的系統要管理訂單,訂單本身是Excel服務器的模板上定義的表,訂單上用的產品信息來自SAP系統,是Oracle外部數據源的表,以往,我們可能定義一條公式,公式的來源數據是兩個表,一個是oracle 外部數據源的產品表,另一個是訂單模板上的訂單表,這樣寫公式很簡潔,一條公式就把要查的數據查了,但是不夠“單純”,因為一條公式,既用到了oracle中的表,也用到了SQL Server中的表,這樣的公式是無法優化的。為了達到優化的目的,我們需要把這一條公式拆成兩條公式,一條查Oracle 中的產品,另一條查訂單,如此滿足了優化的條件,查Oracle 產品的公式就可以選優化模式。

 

上一節 下一節
關閉 在線客服
街机李逵劈鱼游戏