Hello,
I lost my query that I used before :-(
(I put the file in GIT after my second query)

I will however have another try and I will post it to you.
I was also wondering if my indices were correctly defined.

Many thanks for your answers, I appreciate a lot your help.

Cheers,
Sylvain



On Mon, Feb 16, 2009 at 8:19 AM, Edzard Pasma <edz...@volcanomail.com>wrote:

> Hello,
>
> Your current solution is theoretically not optimal, as it evaluates a
> sub-query for each row in table T, whereas a construction with LIMIT does
> this only once for each group. If you wish I may look at the 'infinite'
> query, just mail it. Otherwise we at least have proved SQLite's incredible
> speed in doing UPDATE :)
>
> Edzard Pasma
>
> --- sylvain.point...@gmail.com wrote:
>
> From: Sylvain Pointeau <sylvain.point...@gmail.com>
> To: edz...@volcanomail.com,     General Discussion of SQLite Database <
> sqlite-users@sqlite.org>
> Subject: Re: [sqlite] having the Top N for each group
> Date: Sun, 15 Feb 2009 21:44:58 +0100
>
> Hello,
> on my large dataset, it tooks an infinite time.
> I finished with :
>
> update T
> set ranknum = (select count(*) from T a where ... a.value >= T.value .... )
>
> and it works fast enough, in few minutes.
>
> if you have better solution, I would be glad to change.
>
> Cheers,
> Sylvain
>
> On Sun, Feb 15, 2009 at 10:06 AM, Edzard Pasma <edz...@volcanomail.com
> >wrote:
>
> > Hello again,
> >
> > The following solution is more elegant than my earlier group_cancat idea,
> > and is just as fast. I had not expected that as it seems what you started
> > with.
> >
> > select period.period, sales.product
> > from period
> > join sales on sales.rowid in (
> >    select rowid
> >    from sales
> >    where sales.period = period.period
> >    order by sales.qty desc
> >    limit 3);
> >
> > -- Edzard Pasma
> >
> >
> > --- sylvain.point...@gmail.com wrote:
> >
> > From: Sylvain Pointeau <sylvain.point...@gmail.com>
> > To: sqlite-users@sqlite.org
> > Subject: [sqlite] having the Top N for each group
> > Date: Sat, 14 Feb 2009 09:21:15 +0100
> >
> > Hello all,
> > I am wondering if we have a method faster then the INNER JOIN which
> > can be very slow in case of large number of rows, which is my case.
> > I was thinking of a UDF that increment a number if the concatenation of
> the
> > key column (or group columns) is the same, means:
> > select col1, col2, udf_topN(col1||col2) from TTT order by value group by
> > col1,col2
> >
> > will result into
> >
> > 1,1,1
> > 1,1,2
> > 1,1,3
> > 2,1,1
> > 2,1,2
> > 2,1,3
> > 4,3,1
> > 4,3,2
> > etc
> >
> >
> > however I don't really find how to keep, initialize, and destroy a
> variable
> > in a UDF for a query time execution
> >
> > do you have some idea?
> > is a TopN function planned for the future version of sqlite?
> >
> > Many thanks,
> > Sylvain
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users@sqlite.org
> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> >
> >
> > _______________________________________________
> > sqlite-users mailing list
> > sqlite-users@sqlite.org
> > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users
> >
>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to