1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Experimental attempt to make better use of covering indexes within OR queries.

FossilOrigin-Name: a323ac3a9d42bd5cb38d724c7e1180584b91054c
This commit is contained in:
dan
2016-01-29 19:29:45 +00:00
parent 65875f37bc
commit de892d9660
7 changed files with 121 additions and 22 deletions

View File

@ -156,7 +156,7 @@ do_searchcount_test 3.4.4 {
do_searchcount_test 3.5.1 {
SELECT a, b FROM t3 WHERE (a=1 AND b='one') OR rowid=4
} {1 one 2 two search 3}
} {1 one 2 two search 2}
do_searchcount_test 3.5.2 {
SELECT a, c FROM t3 WHERE (a=1 AND b='one') OR rowid=4
} {1 i 2 ii search 3}
@ -271,5 +271,34 @@ do_execsql_test 5.3 {
c16=1 or c17=1;
} {1 {} {} {} {} {} {} {} {} {} {} {} {} {} {} 1 {} {}}
#-------------------------------------------------------------------------
do_execsql_test 6.1 {
CREATE TABLE x1(a, b, c, d, e);
CREATE INDEX x1a ON x1(a);
CREATE INDEX x1bc ON x1(b, c);
CREATE INDEX x1cd ON x1(c, d);
INSERT INTO x1 VALUES(1, 2, 3, 4, 'A');
INSERT INTO x1 VALUES(5, 6, 7, 8, 'B');
INSERT INTO x1 VALUES(9, 10, 11, 12, 'C');
INSERT INTO x1 VALUES(13, 14, 15, 16, 'D');
}
do_searchcount_test 6.2.1 {
SELECT e FROM x1 WHERE b=2 OR c=7;
} {A B search 6}
do_searchcount_test 6.2.2 {
SELECT c FROM x1 WHERE b=2 OR c=7;
} {3 7 search 4}
do_searchcount_test 6.3.1 {
SELECT e FROM x1 WHERE a=1 OR b=10;
} {A C search 6}
do_searchcount_test 6.3.2 {
SELECT c FROM x1 WHERE a=1 OR b=10;
} {3 11 search 5}
do_searchcount_test 6.3.3 {
SELECT rowid FROM x1 WHERE a=1 OR b=10;
} {1 3 search 4}
finish_test