summaryrefslogtreecommitdiffstats
path: root/www/c3ref/c_scanstat_est.html
blob: 77de6a141dd026b65f50d3ff909d486defbb647b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<!DOCTYPE html>
<html><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="../sqlite.css" rel="stylesheet">
<title>Prepared Statement Scan Status Opcodes</title>
<!-- path=../ -->
</head>
<body>
<div class=nosearch>
<a href="../index.html">
<img class="logo" src="../images/sqlite370_banner.gif" alt="SQLite" border="0">
</a>
<div><!-- IE hack to prevent disappearing logo --></div>
<div class="tagline desktoponly">
Small. Fast. Reliable.<br>Choose any three.
</div>
<div class="menu mainmenu">
<ul>
<li><a href="../index.html">Home</a>
<li class='mobileonly'><a href="javascript:void(0)" onclick='toggle_div("submenu")'>Menu</a>
<li class='wideonly'><a href='../about.html'>About</a>
<li class='desktoponly'><a href="../docs.html">Documentation</a>
<li class='desktoponly'><a href="../download.html">Download</a>
<li class='wideonly'><a href='../copyright.html'>License</a>
<li class='desktoponly'><a href="../support.html">Support</a>
<li class='desktoponly'><a href="../prosupport.html">Purchase</a>
<li class='search' id='search_menubutton'>
<a href="javascript:void(0)" onclick='toggle_search()'>Search</a>
</ul>
</div>
<div class="menu submenu" id="submenu">
<ul>
<li><a href='../about.html'>About</a>
<li><a href='../docs.html'>Documentation</a>
<li><a href='../download.html'>Download</a>
<li><a href='../support.html'>Support</a>
<li><a href='../prosupport.html'>Purchase</a>
</ul>
</div>
<div class="searchmenu" id="searchmenu">
<form method="GET" action="../search">
<select name="s" id="searchtype">
<option value="d">Search Documentation</option>
<option value="c">Search Changelog</option>
</select>
<input type="text" name="q" id="searchbox" value="">
<input type="submit" value="Go">
</form>
</div>
</div>
<script>
function toggle_div(nm) {
var w = document.getElementById(nm);
if( w.style.display=="block" ){
w.style.display = "none";
}else{
w.style.display = "block";
}
}
function toggle_search() {
var w = document.getElementById("searchmenu");
if( w.style.display=="block" ){
w.style.display = "none";
} else {
w.style.display = "block";
setTimeout(function(){
document.getElementById("searchbox").focus()
}, 30);
}
}
function div_off(nm){document.getElementById(nm).style.display="none";}
window.onbeforeunload = function(e){div_off("submenu");}
/* Disable the Search feature if we are not operating from CGI, since */
/* Search is accomplished using CGI and will not work without it. */
if( !location.origin || !location.origin.match || !location.origin.match(/http/) ){
document.getElementById("search_menubutton").style.display = "none";
}
/* Used by the Hide/Show button beside syntax diagrams, to toggle the */
function hideorshow(btn,obj){
var x = document.getElementById(obj);
var b = document.getElementById(btn);
if( x.style.display!='none' ){
x.style.display = 'none';
b.innerHTML='show';
}else{
x.style.display = '';
b.innerHTML='hide';
}
return false;
}
var antiRobot = 0;
function antiRobotGo(){
if( antiRobot!=3 ) return;
antiRobot = 7;
var j = document.getElementById("mtimelink");
if(j && j.hasAttribute("data-href")) j.href=j.getAttribute("data-href");
}
function antiRobotDefense(){
document.body.onmousedown=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousedown=null;
}
document.body.onmousemove=function(){
antiRobot |= 2;
antiRobotGo();
document.body.onmousemove=null;
}
setTimeout(function(){
antiRobot |= 1;
antiRobotGo();
}, 100)
antiRobotGo();
}
antiRobotDefense();
</script>
<!-- keywords: SQLITE_SCANSTAT_EST SQLITE_SCANSTAT_EXPLAIN SQLITE_SCANSTAT_NAME SQLITE_SCANSTAT_NCYCLE SQLITE_SCANSTAT_NLOOP SQLITE_SCANSTAT_NVISIT SQLITE_SCANSTAT_PARENTID SQLITE_SCANSTAT_SELECTID {scanstatus options} -->
<div class=nosearch>
<a href="../c3ref/intro.html"><h2>SQLite C Interface</h2></a>
<h2>Prepared Statement Scan Status Opcodes</h2>
</div>
<blockquote><pre>
#define SQLITE_SCANSTAT_NLOOP    0
#define SQLITE_SCANSTAT_NVISIT   1
#define SQLITE_SCANSTAT_EST      2
#define SQLITE_SCANSTAT_NAME     3
#define SQLITE_SCANSTAT_EXPLAIN  4
#define SQLITE_SCANSTAT_SELECTID 5
#define SQLITE_SCANSTAT_PARENTID 6
#define SQLITE_SCANSTAT_NCYCLE   7
</pre></blockquote>
<p>
The following constants can be used for the T parameter to the
<a href="../c3ref/stmt_scanstatus.html">sqlite3_stmt_scanstatus(S,X,T,V)</a> interface.  Each constant designates a
different metric for sqlite3_stmt_scanstatus() to return.</p>

<p>When the value returned to V is a string, space to hold that string is
managed by the prepared statement S and will be automatically freed when
S is finalized.</p>

<p>Not all values are available for all query elements. When a value is
not available, the output variable is set to -1 if the value is numeric,
or to NULL if it is a string (SQLITE_SCANSTAT_NAME).</p>

<p><dl>
<a name="sqlitescanstatnloop"></a>
 <dt>SQLITE_SCANSTAT_NLOOP</dt>
<dd>The <a href="../c3ref/int64.html">sqlite3_int64</a> variable pointed to by the V parameter will be
set to the total number of times that the X-th loop has run.</dd></p>

<p><a name="sqlitescanstatnvisit"></a>
 <dt>SQLITE_SCANSTAT_NVISIT</dt>
<dd>The <a href="../c3ref/int64.html">sqlite3_int64</a> variable pointed to by the V parameter will be set
to the total number of rows examined by all iterations of the X-th loop.</dd></p>

<p><a name="sqlitescanstatest"></a>
 <dt>SQLITE_SCANSTAT_EST</dt>
<dd>The "double" variable pointed to by the V parameter will be set to the
query planner's estimate for the average number of rows output from each
iteration of the X-th loop.  If the query planner's estimates was accurate,
then this value will approximate the quotient NVISIT/NLOOP and the
product of this value for all prior loops with the same SELECTID will
be the NLOOP value for the current loop.</p>

<p><a name="sqlitescanstatname"></a>
 <dt>SQLITE_SCANSTAT_NAME</dt>
<dd>The "const char *" variable pointed to by the V parameter will be set
to a zero-terminated UTF-8 string containing the name of the index or table
used for the X-th loop.</p>

<p><a name="sqlitescanstatexplain"></a>
 <dt>SQLITE_SCANSTAT_EXPLAIN</dt>
<dd>The "const char *" variable pointed to by the V parameter will be set
to a zero-terminated UTF-8 string containing the <a href="../eqp.html">EXPLAIN QUERY PLAN</a>
description for the X-th loop.</p>

<p><a name="sqlitescanstatselectid"></a>
 <dt>SQLITE_SCANSTAT_SELECTID</dt>
<dd>The "int" variable pointed to by the V parameter will be set to the
id for the X-th query plan element. The id value is unique within the
statement. The select-id is the same value as is output in the first
column of an <a href="../eqp.html">EXPLAIN QUERY PLAN</a> query.</p>

<p><a name="sqlitescanstatparentid"></a>
 <dt>SQLITE_SCANSTAT_PARENTID</dt>
<dd>The "int" variable pointed to by the V parameter will be set to the
the id of the parent of the current query element, if applicable, or
to zero if the query element has no parent. This is the same value as
returned in the second column of an <a href="../eqp.html">EXPLAIN QUERY PLAN</a> query.</p>

<p><a name="sqlitescanstatncycle"></a>
 <dt>SQLITE_SCANSTAT_NCYCLE</dt>
<dd>The sqlite3_int64 output value is set to the number of cycles,
according to the processor time-stamp counter, that elapsed while the
query element was being processed. This value is not available for
all query elements - if it is unavailable the output variable is
set to -1.
</dl>
</p><p>See also lists of
  <a href="../c3ref/objlist.html">Objects</a>,
  <a href="../c3ref/constlist.html">Constants</a>, and
  <a href="../c3ref/funclist.html">Functions</a>.</p>