分享方式:


區塊資料指標

許多應用程式會花費大量時間在網路上傳送資料。 這些時間實際上只有一部分用於在網路上傳送資料,另一部分則是耗費在網路的額外負荷上,例如驅動程式為了要求資料列所發出的呼叫。 如果應用程式能有效率地使用區塊 (或 fat)、游標,就能一次傳回多個資料列,減少在額外負荷上花費的時間。

所有應用程式都可以選擇使用區塊游標。 在一次只能擷取一個資料列的資料來源中,區塊游標必須在驅動程式中模擬。 這可以藉由執行多次單一資料列擷取來完成。 雖然這種作法難以提供任何效能提升,但卻能為應用程式創造機會。 隨著 DBMS 以原生方式實現原生區塊游標,再加上與這些 DBMS 相關聯的驅動程式將區塊游標公開,這類應用程式效能將得以提升。

利用區塊游標在單一擷取中傳回的資料列稱為「資料列集」。 要注意的是,請不要將資料列集與結果集混為一談。 結果集會保留在資料來源上,而資料列集則會保留在應用程式緩衝區中。 結果集是固定的,而資料列集則不是。每次擷取一組新的資料列時,資料列集的位置和內容都會改變。 就像單一資料列指標 (例如傳統 SQL 順向資料指標) 指向一個目前的資料列,區塊游標會指向資料列集 (可視為「目前的資料列」)。

若要在擷取多個資料列時對單一資料列執行作業,應用程式必須先指出哪一個資料列是目前的資料列。 呼叫 SQLGetData 和定點更新與刪除陳述式都需要目前資料列。 當區塊游標第一次傳回資料列集時,目前資料列是資料列集中的第一個資料列。 若要變更目前資料列,應用程式會呼叫 SQLSetPosSQLBulkOperations (透過書籤更新)。 下圖顯示結果集、資料列集、目前資料列、資料列集指標和區塊游標的關聯性。 如需詳細資訊,請參閱本節稍後討論的使用區塊游標定點更新和刪除陳述式透過 SQLSetPos 更新資料

擷取下一個、上一個、第一個和最後一個資料列集

資料指標是否為區塊資料指標,與它是否可捲動無關。 例如,在報表應用程式中,大部分的工作都在於擷取和列印資料列。 因此,這類應用程式在透過順向區塊游標時運作速度最快。 它可以使用順向資料指標來避免可捲動資料指標的費用,並使用區塊游標來減少網路流量。

此章節包含下列主題。