I have an unusual query that takes about 15 seconds to process on a tiny
database using version 3.6.23.1. In older versions of sqlite3 this query
executes in about 20ms and produces different output (I tested 3.3.6).
I tried to simplify the query and data as much as possible. The query is
weird, I'm not even sure I know what I would expect the output to be.
But the fact that the behavior has changed is certain. See my test case
below.
My question is, is this a bug or is this unsupported or unspecified
functionality?
thanks!
Peter Pawlowski
==== SQL statement ====
select
count (*) from (select * from reporting) as foo
left outer join (select id from type) as A0
left outer join (select id from level) as A1
left outer join (select id from message_id) as A2
left outer join (select id from message) as A3
on ( A0.id = foo.id and A1.id = foo.id and A2.id = foo.id and A3.id
= foo.id )
group by foo.id
;
==== Test run with sqlite-3.3.6 ====
$ sqlite3 -version
3.3.6
$ time sqlite3 db < sql
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
real 0m0.017s
user 0m0.001s
sys 0m0.009s
==== Test run with sqlite 3.6.23.1 ====
$ ./sqlite3 -version
3.6.23.1
$ time ./sqlite3 db < sql
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
27000
real 0m15.296s
user 0m15.144s
sys 0m0.030s
==== Database dump ====
BEGIN TRANSACTION;
CREATE TABLE reporting ( ID VARCHAR PRIMARY KEY, DATE INTEGER);
INSERT INTO "reporting" VALUES('S9XnCAo2JBvX', 1272309512);
INSERT INTO "reporting" VALUES('S9XnCAo+bxvX', 1272309512);
INSERT INTO "reporting" VALUES('S9XnCQG92xvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCQH5shvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCQIBzRvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCQp6EBvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCQqmiBvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCQqvCxvX', 1272309513);
INSERT INTO "reporting" VALUES('S9XnCgaTChvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCga9EhvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCgbF-hvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCg1sVRvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCg2VwxvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCg2dnxvX', 1272309514);
INSERT INTO "reporting" VALUES('S9XnCwgyBxvX', 1272309515);
INSERT INTO "reporting" VALUES('S9XnCwhcEhvX', 1272309515);
INSERT INTO "reporting" VALUES('S9XnDAhuBBvX', 1272309516);
INSERT INTO "reporting" VALUES('S9XnDAh2OBvX', 1272309516);
INSERT INTO "reporting" VALUES('S9XnDQQBVRvX', 1272309517);
INSERT INTO "reporting" VALUES('S9XnDQQu-xvX', 1272309517);
INSERT INTO "reporting" VALUES('S9XnDQQ3BBvX', 1272309517);
INSERT INTO "reporting" VALUES('S9XnDQrNLhvX', 1272309517);
INSERT INTO "reporting" VALUES('S9XnDQr2axvX', 1272309517);
INSERT INTO "reporting" VALUES('S9XnDgFfli74', 1272309518);
INSERT INTO "reporting" VALUES('S9XnDgsHSBvX', 1272309518);
INSERT INTO "reporting" VALUES('S9XnkgP0yBvX', 1272309650);
INSERT INTO "reporting" VALUES('S9Xnkg1QBBvX', 1272309650);
INSERT INTO "reporting" VALUES('S9Xnkg17UxvX', 1272309650);
INSERT INTO "reporting" VALUES('S9Xnkg2W1BvX', 1272309650);
INSERT INTO "reporting" VALUES('S9XnlAKYNFwW', 1272309652);
CREATE TABLE type (id varchar);
INSERT INTO "type" VALUES('S9XnCAo2JBvX');
INSERT INTO "type" VALUES('S9XnCAo+bxvX');
INSERT INTO "type" VALUES('S9XnCQG92xvX');
INSERT INTO "type" VALUES('S9XnCQH5shvX');
INSERT INTO "type" VALUES('S9XnCQIBzRvX');
INSERT INTO "type" VALUES('S9XnCQp6EBvX');
INSERT INTO "type" VALUES('S9XnCQqmiBvX');
INSERT INTO "type" VALUES('S9XnCQqvCxvX');
INSERT INTO "type" VALUES('S9XnCgaTChvX');
INSERT INTO "type" VALUES('S9XnCga9EhvX');
INSERT INTO "type" VALUES('S9XnCgbF-hvX');
INSERT INTO "type" VALUES('S9XnCg1sVRvX');
INSERT INTO "type" VALUES('S9XnCg2VwxvX');
INSERT INTO "type" VALUES('S9XnCg2dnxvX');
INSERT INTO "type" VALUES('S9XnCwgyBxvX');
INSERT INTO "type" VALUES('S9XnCwhcEhvX');
INSERT INTO "type" VALUES('S9XnDAhuBBvX');
INSERT INTO "type" VALUES('S9XnDAh2OBvX');
INSERT INTO "type" VALUES('S9XnDQQBVRvX');
INSERT INTO "type" VALUES('S9XnDQQu-xvX');
INSERT INTO "type" VALUES('S9XnDQQ3BBvX');
INSERT INTO "type" VALUES('S9XnDQrNLhvX');
INSERT INTO "type" VALUES('S9XnDQr2axvX');
INSERT INTO "type" VALUES('S9XnDgFfli74');
INSERT INTO "type" VALUES('S9XnDgsHSBvX');
INSERT INTO "type" VALUES('S9XnkgP0yBvX');
INSERT INTO "type" VALUES('S9Xnkg1QBBvX');
INSERT INTO "type" VALUES('S9Xnkg17UxvX');
INSERT INTO "type" VALUES('S9Xnkg2W1BvX');
INSERT INTO "type" VALUES('S9XnlAKYNFwW');
CREATE TABLE message_id (id varchar);
INSERT INTO "message_id" VALUES('S9XnCAo2JBvX');
INSERT INTO "message_id" VALUES('S9XnCAo+bxvX');
INSERT INTO "message_id" VALUES('S9XnCQG92xvX');
INSERT INTO "message_id" VALUES('S9XnCQH5shvX');
INSERT INTO "message_id" VALUES('S9XnCQIBzRvX');
INSERT INTO "message_id" VALUES('S9XnCQp6EBvX');
INSERT INTO "message_id" VALUES('S9XnCQqmiBvX');
INSERT INTO "message_id" VALUES('S9XnCQqvCxvX');
INSERT INTO "message_id" VALUES('S9XnCgaTChvX');
INSERT INTO "message_id" VALUES('S9XnCga9EhvX');
INSERT INTO "message_id" VALUES('S9XnCgbF-hvX');
INSERT INTO "message_id" VALUES('S9XnCg1sVRvX');
INSERT INTO "message_id" VALUES('S9XnCg2VwxvX');
INSERT INTO "message_id" VALUES('S9XnCg2dnxvX');
INSERT INTO "message_id" VALUES('S9XnCwgyBxvX');
INSERT INTO "message_id" VALUES('S9XnCwhcEhvX');
INSERT INTO "message_id" VALUES('S9XnDAhuBBvX');
INSERT INTO "message_id" VALUES('S9XnDAh2OBvX');
INSERT INTO "message_id" VALUES('S9XnDQQBVRvX');
INSERT INTO "message_id" VALUES('S9XnDQQu-xvX');
INSERT INTO "message_id" VALUES('S9XnDQQ3BBvX');
INSERT INTO "message_id" VALUES('S9XnDQrNLhvX');
INSERT INTO "message_id" VALUES('S9XnDQr2axvX');
INSERT INTO "message_id" VALUES('S9XnDgFfli74');
INSERT INTO "message_id" VALUES('S9XnDgsHSBvX');
INSERT INTO "message_id" VALUES('S9XnkgP0yBvX');
INSERT INTO "message_id" VALUES('S9Xnkg1QBBvX');
INSERT INTO "message_id" VALUES('S9Xnkg17UxvX');
INSERT INTO "message_id" VALUES('S9Xnkg2W1BvX');
INSERT INTO "message_id" VALUES('S9XnlAKYNFwW');
CREATE TABLE message (id varchar);
INSERT INTO "message" VALUES('S9XnCAo2JBvX');
INSERT INTO "message" VALUES('S9XnCAo+bxvX');
INSERT INTO "message" VALUES('S9XnCQG92xvX');
INSERT INTO "message" VALUES('S9XnCQH5shvX');
INSERT INTO "message" VALUES('S9XnCQIBzRvX');
INSERT INTO "message" VALUES('S9XnCQp6EBvX');
INSERT INTO "message" VALUES('S9XnCQqmiBvX');
INSERT INTO "message" VALUES('S9XnCQqvCxvX');
INSERT INTO "message" VALUES('S9XnCgaTChvX');
INSERT INTO "message" VALUES('S9XnCga9EhvX');
INSERT INTO "message" VALUES('S9XnCgbF-hvX');
INSERT INTO "message" VALUES('S9XnCg1sVRvX');
INSERT INTO "message" VALUES('S9XnCg2VwxvX');
INSERT INTO "message" VALUES('S9XnCg2dnxvX');
INSERT INTO "message" VALUES('S9XnCwgyBxvX');
INSERT INTO "message" VALUES('S9XnCwhcEhvX');
INSERT INTO "message" VALUES('S9XnDAhuBBvX');
INSERT INTO "message" VALUES('S9XnDAh2OBvX');
INSERT INTO "message" VALUES('S9XnDQQBVRvX');
INSERT INTO "message" VALUES('S9XnDQQu-xvX');
INSERT INTO "message" VALUES('S9XnDQQ3BBvX');
INSERT INTO "message" VALUES('S9XnDQrNLhvX');
INSERT INTO "message" VALUES('S9XnDQr2axvX');
INSERT INTO "message" VALUES('S9XnDgFfli74');
INSERT INTO "message" VALUES('S9XnDgsHSBvX');
INSERT INTO "message" VALUES('S9XnkgP0yBvX');
INSERT INTO "message" VALUES('S9Xnkg1QBBvX');
INSERT INTO "message" VALUES('S9Xnkg17UxvX');
INSERT INTO "message" VALUES('S9Xnkg2W1BvX');
INSERT INTO "message" VALUES('S9XnlAKYNFwW');
CREATE TABLE level (id varchar);
INSERT INTO "level" VALUES('S9XnCAo2JBvX');
INSERT INTO "level" VALUES('S9XnCAo+bxvX');
INSERT INTO "level" VALUES('S9XnCQG92xvX');
INSERT INTO "level" VALUES('S9XnCQH5shvX');
INSERT INTO "level" VALUES('S9XnCQIBzRvX');
INSERT INTO "level" VALUES('S9XnCQp6EBvX');
INSERT INTO "level" VALUES('S9XnCQqmiBvX');
INSERT INTO "level" VALUES('S9XnCQqvCxvX');
INSERT INTO "level" VALUES('S9XnCgaTChvX');
INSERT INTO "level" VALUES('S9XnCga9EhvX');
INSERT INTO "level" VALUES('S9XnCgbF-hvX');
INSERT INTO "level" VALUES('S9XnCg1sVRvX');
INSERT INTO "level" VALUES('S9XnCg2VwxvX');
INSERT INTO "level" VALUES('S9XnCg2dnxvX');
INSERT INTO "level" VALUES('S9XnCwgyBxvX');
INSERT INTO "level" VALUES('S9XnCwhcEhvX');
INSERT INTO "level" VALUES('S9XnDAhuBBvX');
INSERT INTO "level" VALUES('S9XnDAh2OBvX');
INSERT INTO "level" VALUES('S9XnDQQBVRvX');
INSERT INTO "level" VALUES('S9XnDQQu-xvX');
INSERT INTO "level" VALUES('S9XnDQQ3BBvX');
INSERT INTO "level" VALUES('S9XnDQrNLhvX');
INSERT INTO "level" VALUES('S9XnDQr2axvX');
INSERT INTO "level" VALUES('S9XnDgFfli74');
INSERT INTO "level" VALUES('S9XnDgsHSBvX');
INSERT INTO "level" VALUES('S9XnkgP0yBvX');
INSERT INTO "level" VALUES('S9Xnkg1QBBvX');
INSERT INTO "level" VALUES('S9Xnkg17UxvX');
INSERT INTO "level" VALUES('S9Xnkg2W1BvX');
INSERT INTO "level" VALUES('S9XnlAKYNFwW');
CREATE INDEX reporting_date ON reporting ( DATE );
COMMIT;
--
Peter Pawlowski | Senior Software Engineer
Office: +1.412.422.2499 x116
[email protected] | Connect: www.vivisimo.com
Vivisimo - Information Optimized
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users