On 05/12/2017 02:47 AM, David Raymond wrote:
My brain might just not be working right today. Would you be so kind as to give 
an example for:

"Transfer any terms of the HAVING clause that use only columns mentioned in the 
GROUP BY clause over to the WHERE clause for faster processing."

Say:

  CREATE TABLE t1(a,b);
  CREATE INDEX t1a ON t1(a);

then:

  SELECT * FROM t1 GROUP BY t1.a HAVING t1.a=?

may be rewritten as

  SELECT * FROM t1 WHERE t1.a=? GROUP BY t1.a

In which the filtering is done before the grouping instead of after it, which will be faster. And because the filter uses the index, in this case it loads less data from disk too.

Combined with SQLite's subquery flattening:

  https://www.sqlite.org/optoverview.html#flattening

it can effectively transform things like:

  SELECT x,y FROM (
    SELECT a AS x, sum(b) AS y FROM t1 GROUP BY a
  ) WHERE x BETWEEN 8888 AND 9999;

to

  SELECT x,y FROM (
    SELECT a AS x, sum(b) AS y FROM t1 WHERE a BETWEEN 8888 AND 9999 GROUP BY a
  );

as well.

Dan.







?

Thanks


-----Original Message-----
From: sqlite-users [mailto:sqlite-users-boun...@mailinglists.sqlite.org] On 
Behalf Of Richard Hipp
Sent: Thursday, May 11, 2017 2:55 PM
To: sqlite-dev; General Discussion of SQLite Database
Subject: [sqlite] Version 3.19.0 about to enter testing

SQLite version 3.19.0 will soon enter testing with a target release
date of 2017-05-25.  If you have any issues or concerns, please bring
them up now.

    Change log:  https://sqlite.org/draft/releaselog/3_19_0.html
    Snapshot: https://sqlite.org/download.html
    Checklist: https://sqlite.org/checklists/3190000/index

The release will occur when the checklist goes all-green.


_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to