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