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。 |