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" 必须是 scanstatus 选项 之一,否则此接口的行为未定义。请求的测量结果将写入由 "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 指向的变量保持不变。