資料列集大小

資料列集使用的大小取決於應用程式。 以螢幕為基礎的應用程式通常會遵循兩種策略其一。 第一個是將資料列集大小設定為畫面上顯示的資料列數目;如果使用者調整螢幕大小,應用程式會依其變更資料列集大小。 第二個是將資料列集大小設定為較大數目,例如 100,以減少對資料來源的呼叫數目。 應用程式盡可能在資料列集區域內捲動,只有在資料列集外捲動時才會擷取新的資料列。

其他應用程式,例如報表,通常會將資料列集大小設定為應用程式可合理處理的最大資料列數目,並使用較大資料列集,有時能夠減少每個資料列的網路額外負荷。 資料列集確切大小取決於每個資料列的大小及可用記憶體數量。

資料列集大小是由具有屬性引數 SQL_ATTR_ROW_ARRAY_SIZE 的 SQLSetStmtAttr 呼叫設定。 即使在擷取資料列之後,應用程式仍可變更資料列集大小,以及繫結新資料列集緩衝區(方法為呼叫 SQLBindCol 或指定繫結位移)。 變更資料列集大小的影響取決於函數:

  • SQLFetchSQLFetchScroll 會在呼叫時使用資料列集大小,以判斷要擷取的列數。 不過,具有 FetchOrientation SQL_FETCH_NEXT 的 SQLFetchScroll 會根據前一個擷取的資料列集遞增資料指標,然後根據目前資料列集大小擷取資料列集。

  • SQLSetPos 會使用在先前呼叫 SQLFetchSQLFetchScroll 時生效的資料列集大小,因為 SQLSetPos 會在已設定的資料列集上運作。 如果變更資料列集大小之後呼叫 SQLBulkOperationsSQLSetPos 也會挑選新的資料列集大小。

  • SQLBulkOperations 實際上會在呼叫時使用資料列集大小,因為它會在與任何擷取的資料列集無關的資料表上執行作業。