mcm made some initial attempts and indicated about a 25% improvement, with
the expectation that some further improvement could be made with more
effort:
https://groups.google.com/forum/#!topic/web2py-developers/Tp6HXsSf7lk/discussion.
However, it sounded like we wouldn't be likely to get enough improvement to
substantially help with large selects (i.e., tens of thousands of rows) --
for that case, we probably need something like what nick name is proposing
(which will actually be easier to implement, anyway).
Anthony
On Friday, March 9, 2012 1:48:06 PM UTC-5, spiffytech wrote:
>
> Before we add special features to the DAL, has anyone profiled the DAL
> with queries and data similar to nick name's to see if there's any
> low-hanging fruit we can tackle to speed up the normal select()?
>
> nick name, can you please provide your table schema so we can test
> performance on data sets similar to yours?
>
>
> On Thursday, February 9, 2012 1:51:47 PM UTC-5, nick name wrote:
>>
>> One of my controllers need to go through a lot of records to provide a
>> meaningful answer -- as in, 60k records.
>>
>> Just loading them from the database takes about 100ms
>> (db.executesql("select * from table order by id;")); Doing the same through
>> DAL takes over 6 seconds. I realize that the DAL does do a lot of
>> additional work, which in general is helpful -- but I can do without all
>> the parsing / Rows() generation for this.
>>
>> What do people here think about adding a db.rawselect(...), which is a
>> slim rapper for db.executesql(db._select()) .... that wraps everything with
>> a named tuple? It solves most of the speed problem when it is needed, but
>> still maintains a lot of the features of the SQL DAL processing.
>>
>>
On Friday, March 9, 2012 1:48:06 PM UTC-5, spiffytech wrote:
>
> Before we add special features to the DAL, has anyone profiled the DAL
> with queries and data similar to nick name's to see if there's any
> low-hanging fruit we can tackle to speed up the normal select()?
>
> nick name, can you please provide your table schema so we can test
> performance on data sets similar to yours?
>
>
> On Thursday, February 9, 2012 1:51:47 PM UTC-5, nick name wrote:
>>
>> One of my controllers need to go through a lot of records to provide a
>> meaningful answer -- as in, 60k records.
>>
>> Just loading them from the database takes about 100ms
>> (db.executesql("select * from table order by id;")); Doing the same through
>> DAL takes over 6 seconds. I realize that the DAL does do a lot of
>> additional work, which in general is helpful -- but I can do without all
>> the parsing / Rows() generation for this.
>>
>> What do people here think about adding a db.rawselect(...), which is a
>> slim rapper for db.executesql(db._select()) .... that wraps everything with
>> a named tuple? It solves most of the speed problem when it is needed, but
>> still maintains a lot of the features of the SQL DAL processing.
>>
>>