ZeitgeistEngine.__init__(): statement to get last row id is not using the index

Bug #641100 reported by Markus Korn
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Zeitgeist Framework
Fix Released
Undecided
Markus Korn

Bug Description

The attached script is creating a log with ~49k events.
In the constructor of ZeitgeistEngine we need to search for the minimum and maximum event id. In the script I'm doing two different ways of getting these values:

Our current query:
SELECT MIN(id), MAX(id) FROM event
-> this is not using the event index, and takes about 0.096 secunds for me

do the same in two queries:
SELECT MIN(id) FROM event + SELECT MAX(id) FROM event
-> both queries are using the index, and together they take about 0.003 for me

I suggest changing the one query into two to get some speedups.

Related branches

Revision history for this message
Markus Korn (thekorn) wrote :
Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Damn dude, how can sqlite not use the index for the original query..? Just goes to show that it's definitely worth it to scrutinize those query plans!

Totally +1

Revision history for this message
Siegfried Gevatter (rainct) wrote : Re: [Bug 641100] Re: ZeitgeistEngine.__init__(): statement to get last row id is not using the index

1. +1
2. SQLITE sucks. Big time.

Revision history for this message
Seif Lotfy (seif) wrote :

WHOA +1

On Fri, Sep 17, 2010 at 10:40 AM, Siegfried Gevatter <email address hidden>wrote:

> 1. +1
> 2. SQLITE sucks. Big time.
>
> --
> ZeitgeistEngine.__init__(): statement to get last row id is not using the
> index
> https://bugs.launchpad.net/bugs/641100
> You received this bug notification because you are subscribed to The
> Zeitgeist Project.
>
> Status in Zeitgeist Framework: New
>
> Bug description:
> The attached script is creating a log with ~49k events.
> In the constructor of ZeitgeistEngine we need to search for the minimum and
> maximum event id. In the script I'm doing two different ways of getting
> these values:
>
> Our current query:
> SELECT MIN(id), MAX(id) FROM event
> -> this is not using the event index, and takes about 0.096 secunds for me
>
> do the same in two queries:
> SELECT MIN(id) FROM event + SELECT MAX(id) FROM event
> -> both queries are using the index, and together they take about 0.003 for
> me
>
> I suggest changing the one query into two to get some speedups.
>
>
>

--
This is me doing some advertisement for my blog http://seilo.geekyogre.com

Markus Korn (thekorn)
Changed in zeitgeist:
assignee: nobody → Markus Korn (thekorn)
status: New → In Progress
Markus Korn (thekorn)
Changed in zeitgeist:
status: In Progress → Fix Committed
Changed in zeitgeist:
milestone: none → 0.5.2
Changed in zeitgeist:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.