RE: [CDBI] Is Class::DBI slow?

"Daniel Williams" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.class-dbi
Message-ID <5B0731A8753509478386ED3D6513B2D1CDD1EF@isp-per-exch01.win2k.iinet.net.au>
Hi Ankur,

Change:
Test::Personal->columns(Others => qw/field/);
To:
Test::Personal->columns(Essential => qw/field/);

Should bridge the gap a little.

Daniel
-----Original Message-----
From: classdbi-bounces-Ra3b/[email protected]
[mailto:classdbi-bounces-Ra3b/[email protected]] On Behalf Of Ankur
Gupta
Sent: Friday, 28 April 2006 5:54 PM
To: ClassDBI-uVLvtXkw1RPgjt3iqB9Uk5F3r5kRpbQ7rE5yTffgRl4@public.gmane.org
Subject: [CDBI] Is Class::DBI slow?

Hi All,

My first try with Class::DBI and DBI modules and I find that making a
query using Class::DBI takes much much more time than just DBI.

Is it me who is doing something wrong or Class::DBI is always slow(I
have kind of feeling that its me who is doing something wrong).

Also, I have another question.
Why do I need to specify the column names, primary keys in Class::DBI
while not in DBI? I mean, how is DBI module able to determine the
primary keys and other fields while Class::DBI not.

I have ~40k records and using mysql 5.0.

*** using DBI ***

use strict;
use warnings;
use DBI();

my $dbh =
DBI->connect("DBI:mysql:database=scratch;host=blah","user","passwd");

my $sth = $dbh->prepare("SELECT field from table where user =
'user1'");
$sth->execute();
while (my $ref = $sth->fetchrow_hashref()) {
    print $ref->{field}, "\n";

}

$sth->finish();
$dbh->disconnect();

## Returns the result in a flash

*** using Class::DBI ***

use strict;
use warnings;

use Test::Personal;
my @users = Test::Personal->search(user => "user1");

foreach my $u ( @users ){
    print $u->field, "\n";
}

## Returns the result very slowly.

____Test::Personal____

package Test::Personal;
use base 'Test::DBI';

Test::Personal->table('table');
Test::Personal->columns(Primary => qw/user start_time/);
Test::Personal->columns(Others => qw/field/);

1;

_____Test::DBI_______

package Test::DBI;
use base 'Class::DBI';

Test::DBI->connection('dbi:mysql:database=scratch;host=blah', 'user',
'password');

1;

BTW, I posted this message to perl.beginners, perl.dbi.users and
comp.lang.perl.misc. I did not get an answer but got a pointer to this
list. 

--Ankur 


_______________________________________________
ClassDBI mailing list
ClassDBI-Ra3b/[email protected]
http://lists.digitalcraftsmen.net/mailman/listinfo/classdbi
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.