the DAL db(..).select(...) does two things:
1) generates and executes the SQL (no overhead)
2) parses and normalizes the output in a database independent way 

2) takes time proportional to the number of rows you select. You select 
66000 rows and you tell us it takes 40 minutes? That is more than 30ms for 
row. This cannot be explained with 2) only. Something else is going on. 
perhaps a virtual field?

It would help if you could try isolate the problem selecting less and less 
columns until you figure out where the time goes. You could also try use 
limitby to limit the number of rows to see if the creation of the Rows 
object is hitting some memory limit.

Massimo

On Thursday, 5 July 2012 16:08:01 UTC-5, Santiago wrote:
>
> Hello,
>
> Do you know why the same query, takes more than 40 minutes to get resolved 
> using DAL and less than a second using raw SQL ?  
>
> This is the code using DAL
>
> db(db.voting_center).select()
>
> This is the code using raw SQL
>
> db.executesql('SELECT  voting_center.id, voting_center.election, 
> voting_center.full_id_indra, voting_center.latitude, 
> voting_center.longitude, voting_center.geometry, voting_center.circuit, 
> voting_center.name, voting_center.identification, voting_center.cue, 
> voting_center.annex, voting_center.source, voting_center.external_id, 
> voting_center.locality, voting_center.address, voting_center.provisional, 
> voting_center.definitive FROM voting_center WHERE (voting_center.id > 
> 0);')
>
> electoral-dev=# select count(1) from voting_center;
>  count 
> -------
>  66442
> (1 row)
>
>      Column     |          Type          |                         
> Modifiers                          | Storage  | Description 
>
> ----------------+------------------------+------------------------------------------------------------+----------+-------------
>  id             | integer                | not null default 
> nextval('voting_center_id_seq'::regclass) | plain    | 
>  election       | integer                | not null                       
>                             | plain    | 
>  latitude       | character varying(512) |                                 
>                            | extended | 
>  longitude      | character varying(512) |                                 
>                            | extended | 
>  circuit        | integer                |                                 
>                            | plain    | 
>  identification | character varying(512) | not null                       
>                             | extended | 
>  cue            | character varying(512) |                                 
>                            | extended | 
>  annex          | character varying(512) |                                 
>                            | extended | 
>  source         | character varying(512) |                                 
>                            | extended | 
>  external_id    | character varying(512) |                                 
>                            | extended | 
>  locality       | character varying(512) |                                 
>                            | extended | 
>  address        | character varying(512) |                                 
>                            | extended | 
>  provisional    | integer                |                                 
>                            | plain    | 
>  definitive     | integer                |                                 
>                            | plain    | 
>  geometry       | geometry               |                                 
>                            | main     | 
>  name           | character varying(512) | not null                       
>                             | extended | 
>  full_id_indra  | character varying(12)  |                                 
>                            | extended | 
>
> Thanks in advance
> Santiago
>
>

Reply via email to