共用方式為


JetPrereadKeys 函式

適用于: Windows |Windows Server

JetPrereadKeys 函式

JetPrereadKeys函式會讀取索引鍵值,以改善版本存放區清除的效能。

Windows 7:Windows 7 中引進 PrereadKeys 函式。

    JET_ERR JET_API JetPrereadKeys(
      __in JET_SESID sesid,
      __in JET_TABLEID tableid,
      __in_ecount(ckeys) const void ** rgpvKeys,
      __in_ecount(ckeys) const unsigned long * rgcbKeys,
      __in long ckeys,
      __out_opt long * pckeysPreread,
      __in JET_GRBIT grbit
     );

參數

sesid

要用於 API 呼叫的資料庫會話內容。

tableid

要用於這個呼叫的資料指標。

rgpvKeys

索引鍵指標的陣列。 您可以使用 JetMakeKey 建立金鑰,或使用 JetGetBookmark擷取金鑰。 根據傳遞的 grbit,索引鍵必須依遞增或遞減順序排序。 索引鍵可以使用 memcmp 排序。

rgcbKeys

索引鍵長度的陣列。 rgpvKeys[n] 應該指向長度為 rgcbKeys[n] 的金鑰

ckeys

索引鍵數目。 rgpvKeys 和 rgcbKeys 必須每個指向至少具有 ckeys 元素的陣列。

pckeysPreread

傳回已實際發出預先讀取的索引鍵數目。 此參數可以是 Null。

grbit

這必須是JET_bitPrereadForward或JET_bitPrereadBackward。 如果 grbit 是JET_bitPrereadForward,則必須以遞增順序排序索引鍵。 如果 grbit 是JET_bitPrereadBackward,索引鍵必須依遞減順序排序。

傳回值

此函式會傳回具有下列其中一個傳回碼 的JET_ERR 資料類型。 如需可能 ESE 錯誤的詳細資訊,請參閱 可延伸的儲存引擎錯誤錯誤處理參數

您可以傳回各種 I/O 錯誤,以及這些 API 使用錯誤:

傳回碼

Description

JET_errInvalidGrbit

Grbit 不是JET_bitPrereadForward也不是JET_bitPrereadBackward。

JET_errInvalidBufferSize

傳入的金鑰大小不正確。 索引鍵不能是 0 或超過資料表的最大索引鍵長度。

JET_errInvalidParameter

已傳入不正確參數。 這可能是由必要參數的 Null 值所造成,或者可能表示索引鍵陣列未正確排序。

JetPrereadKeys 會周遊 b 型樹狀結構的內部頁面,以判斷哪些分葉頁面包含 rgpvKeys/rgcbKeys 所指定的索引鍵。 分葉頁面的清單會排序,然後針對頁面範圍發出預先讀取。 預先讀取的頁面數目有限,因此可能並非所有索引鍵都預先讀取。 在此情況下,實際預先讀取的金鑰數目會在 pckeysPreread 中傳回。

規格需求

需求

用戶端

需要 Windows 7。

Server

需要 Windows Server 2008 R2。

標頭

在 Esent.h 中宣告。

程式庫

使用 ESENT.lib。

Dll

需要ESENT.dll。