]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Update the README.md file in the ext/expert/ directory.
authordan <dan@noemail.net>
Fri, 21 Apr 2017 19:53:39 +0000 (19:53 +0000)
committerdan <dan@noemail.net>
Fri, 21 Apr 2017 19:53:39 +0000 (19:53 +0000)
FossilOrigin-Name: 3b2ff4e0692dfca395d4523b7d5cd0dfd5c319c1072a2a873631fa477cee0b79

ext/expert/README.md
manifest
manifest.uuid

index 3cede6c09df971a6dbcbd1ae66dd732777ed072f..b3023f2c1a28ebc1e9c2c224994f7d27fee9382c 100644 (file)
@@ -5,21 +5,20 @@ given a database and a set of SQL queries. It works as follows:
 
   1. The user database schema is copied to a temporary database.
 
-  1. All SQL queries are prepared against the temporary database. The
-     **sqlite3\_whereinfo\_hook()** API is used to record information regarding
-     the WHERE and ORDER BY clauses attached to each query.
+  1. All SQL queries are prepared against the temporary database. I
+     Information regarding the WHERE and ORDER BY clauses, and other query
+     features that affect index selection, are recorded.
 
   1. The information gathered in step 2 is used to create (possibly a large
      number of) candidate indexes.
 
+  1. A subset of the data in the user database is used to generate statistics
+     for all existing indexes and the candidate indexes generated in step 3
+     above.
+
   1. The SQL queries are prepared a second time. If the planner uses any
      of the indexes created in step 3, they are recommended to the user.
 
-No ANALYZE data is available to the planner in step 4 above. This can lead to sub-optimal results.
-
-This extension requires that SQLite be built with the 
-SQLITE\_ENABLE\_WHEREINFO\_HOOK pre-processor symbol defined.
-
 # C API
 
 The SQLite expert C API is defined in sqlite3expert.h. Most uses will proceed
@@ -32,6 +31,10 @@ as follows:
      by making one or more calls to **sqlite3\_expert\_sql()**. Each call may
      specify a single SQL statement, or multiple statements separated by
      semi-colons.
+  
+  1. Optionally, the **sqlite3\_expert\_config()** API may be used to 
+     configure the size of the data subset used to generate index statistics.
+     Using a smaller subset of the data can speed up the analysis.
 
   1. **sqlite3\_expert\_analyze()** is called to run the analysis.
 
@@ -48,10 +51,11 @@ The file "expert.c" contains the code for a command line application that
 uses the API described above. It can be compiled with (for example):
 
 <pre>
-  gcc -O2 -DSQLITE_ENABLE_WHEREINFO_HOOK sqlite3.c expert.c sqlite3expert.c -o sqlite3_expert
+  gcc -O2 sqlite3.c expert.c sqlite3expert.c -o sqlite3_expert
 </pre>
 
-Assuming the database is "test.db", it can then be run to analyze a single query:
+Assuming the database is named "test.db", it can then be run to analyze a
+single query:
 
 <pre>
   ./sqlite3_expert -sql &lt;sql-query&gt; test.db
@@ -63,6 +67,16 @@ Or an entire text file worth of queries with:
   ./sqlite3_expert -file &lt;text-file&gt; test.db
 </pre>
 
+By default, sqlite3_expert generates index statistics using all the data in
+the user database. For a large database, this may be prohibitively time
+consuming. The "-sample" option may be used to configure sqlite3_expert to
+generate statistics based on an integer percentage of the user database as
+follows:
 
+<pre>
+  # Generate statistics based on 25% of the user database rows:
+  ./sqlite3_expert -sample 25 -sql &lt;sql-query&gt; test.db
 
-
+  # Do not generate any statistics at all:
+  ./sqlite3_expert -sample 0 -sql &lt;sql-query&gt; test.db
+</pre>
index 66b5295d638fd38d0eaf2f87f617df3f5c8b8597..a85be5f925a4900a2f49f0268b3e286009433130 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\slatest\strunk\schanges\sinto\sthis\sbranch.
-D 2017-04-20T17:35:46.403
+C Update\sthe\sREADME.md\sfile\sin\sthe\sext/expert/\sdirectory.
+D 2017-04-21T19:53:39.781
 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 6a8c838220f7c00820e1fc0ac1bccaaa8e5676067e1dbfa1bafa7a4ffecf8ae6
@@ -40,7 +40,7 @@ F ext/README.md fd5f78013b0a2bc6f0067afb19e6ad040e89a10179b4f6f03eee58fac5f169bd
 F ext/async/README.txt e12275968f6fde133a80e04387d0e839b0c51f91
 F ext/async/sqlite3async.c 0f3070cc3f5ede78f2b9361fb3b629ce200d7d74
 F ext/async/sqlite3async.h f489b080af7e72aec0e1ee6f1d98ab6cf2e4dcef
-F ext/expert/README.md 9f15075ec5ad772808eff55ef044c31140fd1146aa0a3c47eafd155e71851b01
+F ext/expert/README.md 58a5af07981d6946464eb4b069f36a18dff1d594bcf331a02b4485dac5cd5207
 F ext/expert/expert.c 33842ef151d84c5f8000f9c7b938998c6b999eaef7ce1f4eeb0df8ffe6739496
 F ext/expert/expert1.test 1033e43071b69dc2f4e88fbf03fc7f18846c9865cac14f28c80f581437f09acb
 F ext/expert/sqlite3expert.c 4bc1820a70d68b478884a26a2215df8c1f2d44fb40d9cd8c47d2046c8ce0c8bc
@@ -1582,7 +1582,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 4e366996434e63f06cc451d2011f1f1464360f03430b8260e48f78a612b4e9d6 6b21d0fdebdccfaf63590d9ca9a279c22b8baec07c1a669b9f617f25bd857384
-R 3ff876810132a5a27eb9c4a943446c06
+P b1533bc455f52f570c0f4b8aaa0da802757dc89b0e45b9a9b31aa591a44bf7bd
+R 1bfa4bacff37532498e779dfe65e0523
 U dan
-Z 9bcc0d98d05bcef127f4de36c5b9d364
+Z 425c38161b659ffbe58ff987543a301c
index 10e306f4491b0ba1e9c49b2f5c86770e718383e9..e42f6c368ba5e4232c9d67fd82ccc9bff1d37928 100644 (file)
@@ -1 +1 @@
-b1533bc455f52f570c0f4b8aaa0da802757dc89b0e45b9a9b31aa591a44bf7bd
\ No newline at end of file
+3b2ff4e0692dfca395d4523b7d5cd0dfd5c319c1072a2a873631fa477cee0b79
\ No newline at end of file