afaik, sqlite doesn't store row counts so count(*) causes a full table scan.

On 12/23/05, Axel Mammes (gmail) <[EMAIL PROTECTED]> wrote:
> Wouldn´t a SELECT COUNT(*) just read the table header and get the amount of
> records from there? That should be faster and simpler than maintaning a
> separate table for the counters.
>
> -----Original Message-----
> From: Paul Bohme [mailto:[EMAIL PROTECTED]
> Sent: Viernes, 23 de Diciembre de 2005 02:52 p.m.
> To: sqlite-users@sqlite.org
> Subject: Re: [sqlite] ring buffer table
>
> Julien LEFORT wrote:
>
> >Hi,
> >I would like to implement a log table with a finite dimension, for exemple
> a
> >table with 500 records, and when the last record is set in the table I
> would
> >like to come back at the first tuplet and write over the previous value
> >recorded. I think it's the way SQLite journal is implmented.
> >Is there any way to declare this table with these properties included, so I
>
> >don't have to add code to do this function?
> >Thanks
> >
> >
>
> I need something similar, so was planning a couple of simple tricks to
> keep the overhead low.  I want to avoid "select count" queries as much
> as possible, so how does the following sound:
>
> - insert/delete triggers on the table I want to limit the size of
> - a separate table with a row that contains a single counter, that is
> incremented and decremented by the above triggers
> - a process that runs at intervals that checks the counter, and if over
> the limit trims the appropriate number of records
>
> Seems like a reasonable way to keep a table to a limited growth without
> too much of a hit on every insert.  The counter table would be a serious
> hot spot in other databases, but SQLite's locking is simple enough that
> it doesn't seem like it will be a problem.
>
>   -P
>
>


--
Cory Nelson
http://www.int64.org

Reply via email to