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() с обнуленным параметром флагов.
"idx" определяет определенный элемент запроса, чтобы получить статистику для него. Элементы запроса пронумерованы с 0. Значение -1 нужно для запроса статистики относительно всего запроса. Если idx вне диапазона (меньше -1 или больше, чем или равно общему количеству элементов запроса) ненулевое значение возвращено и переменная, указанная pOut, не изменена.
См. также: sqlite3_stmt_scanstatus_reset().