The DAL is a pure python implementation so it is slower than a C implementation.
With large datasets the overhead is high so it is better to use executesql.
Often there's no other way than pulling all the records at once, but
sometimes a lazy approach to data extraction with the use of limitby
can give the best results: speed and DAL ease of use.

mic

2012/6/22 Alec Taylor <alec.tayl...@gmail.com>:
> From what I understand people use DAL or ORM layers for abstraction purposes.
>
> So a struct with pointer to functions in C will have less overhead
> than a class with member functions in C++. However working at this
> higher level of abstraction allows for some fancy time-saving
> mechanisms such as multiple inheritance, templates, encapsulation and
> subtype polymorphism.
>
> In the database world: queries would of course run much faster when
> written by hand, and stored-procedures will speed up the equivalent
> function built inn Python with the layer in-between. Does this mean we
> should just write pure SQL and stored-procedures?
>
> Yes and no. It depends on what you are setting out to do. If
> performance is your goal and your willing to sacrifice abstraction to
> achieve it, then do as much as you can database and query side.
>
> {An additional advantage of using DAL or ORM layers is the ability to
> move to a different database engine (e.g.: a NoSQL one or from sqlite
> to postgres [use one for dev one for production])/}
>
> <apologies if I went to much into philosophy here, if you have actual
> ideas on how to speed up queries without sacrificing abstraction I'm
> sure your patches will be accepted :]>
>
> On Fri, Jun 22, 2012 at 4:54 PM, pbreit <pbreitenb...@gmail.com> wrote:
>> I have an app where I pull down 5,000 records. I started with DAL and
>> db.item.ALL and it was taking around 4 seconds. I added 5 fields to the
>> select() which got it down to around 2 seconds. Then I implemented the same
>> thing with executesql and got it down to 500 ms.
>>
>> So, selecting only the fields you need is a good optimization. But going
>> with raw SQL is much better.
>>
>> --
>
> --
>
>
>

-- 



Reply via email to