int sqlite3_stmt_scanstatus( sqlite3_stmt *pStmt, /* Prepared statement for which info desired */ int idx, /* Index of loop to report on */ int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */ void *pOut /* Result written here */ ); int sqlite3_stmt_scanstatus_v2( sqlite3_stmt *pStmt, /* Prepared statement for which info desired */ int idx, /* Index of loop to report on */ int iScanStatusOp, /* Information desired. SQLITE_SCANSTAT_* */ int flags, /* Mask of flags defined below */ void *pOut /* Result written here */ );
這些介面會傳回 pStmt 的預測和實際效能資訊。進階應用程式可以使用此介面來比較預測效能和實際效能,並在發現差異時發出警告和/或重新執行 ANALYZE。
由於此介面預計很少使用,因此只有在使用 SQLITE_ENABLE_STMT_SCANSTATUS 編譯時選項編譯 SQLite 時才可用。
「iScanStatusOp」參數決定要返回的狀態資訊。「iScanStatusOp」必須是其中一個 掃描狀態選項,否則此介面的行為未定義。請求的測量值會寫入「pOut」參數指向的變數中。
「flags」參數必須傳遞一個旗標遮罩。目前只定義了一個旗標 - SQLITE_SCANSTAT_COMPLEX。如果指定 SQLITE_SCANSTAT_COMPLEX,則所有查詢計劃元素的狀態資訊都可透過「EXPLAIN QUERY PLAN」輸出報告。如果未指定 SQLITE_SCANSTAT_COMPLEX,則只有對應到查詢迴圈(EXPLAIN QUERY PLAN 輸出的「SCAN...」和「SEARCH...」元素)的查詢計劃元素才可用。呼叫 API sqlite3_stmt_scanstatus() 等同於以零化的 flags 參數呼叫 sqlite3_stmt_scanstatus_v2()。
參數「idx」識別要擷取統計資訊的特定查詢元素。查詢元素從零開始編號。值 -1 可用於查詢整個查詢的統計資訊。如果 idx 超出範圍 - 小於 -1 或大於或等於用於執行語句的查詢元素總數 - 則會返回非零值,並且 pOut 指向的變數保持不變。