Статус сканирования подготовленного оператора
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 скомпилирована с параметром компиляции SQLITE_ENABLE_STMT_SCANSTATUS.
Параметр "iScanStatusOp" определяет, какие сведения о состоянии следует вернуть. Значение "iScanStatusOp" должно быть одним из параметров scanstatus, иначе поведение этого интерфейса не определено. Запрошенное измерение записывается в переменную, на которую указывает параметр "pOut".
В параметре "flags" должна быть передана маска флагов. В настоящее время определён только один флаг — SQLITE_SCANSTAT_COMPLEX. Если указан SQLITE_SCANSTAT_COMPLEX, сведения о состоянии доступны для всех элементов плана запроса, отображаемых в выводе "EXPLAIN QUERY PLAN". Если SQLITE_SCANSTAT_COMPLEX не указан, доступны только элементы плана запроса, соответствующие циклам запроса (элементы "SCAN..." и "SEARCH..." в выводе EXPLAIN QUERY PLAN). Вызов API sqlite3_stmt_scanstatus() эквивалентен вызову sqlite3_stmt_scanstatus_v2() с нулевым значением параметра flags.
Параметр "idx" задаёт конкретный элемент запроса, для которого требуется получить статистику. Нумерация элементов запроса начинается с нуля. Значение -1 может использоваться для получения статистики по всему запросу. Если idx выходит за допустимый диапазон — меньше -1 или больше либо равен общему числу элементов запроса, используемых для выполнения оператора, — возвращается ненулевое значение, а переменная, на которую указывает pOut, остаётся без изменений.
См. также: sqlite3_stmt_scanstatus_reset() и столбцы nexec и ncycle виртуальной таблицы байт-кода.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/stmt_scanstatus.html