Visa ett inlägg
Oläst 2005-08-12, 21:12 #6
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
OT:
Kod:
#!/usr/local/bin/perl -w

use DBI;

require ("database_login.pl");
my $blah = subnet_connect();
my $dbh = $$blah;
######

my ($sql,$sth,$sql2,$sth2,$t1,$t2,$t3,$t4,$iters);
$iters = 100000;
$sql = 'SELECT SQL_NO_CACHE COUNT(*) FROM article';
$sth = $dbh->prepare($sql);

$t1 = time();
for($i=0;$i<$iters;$i++) {
    $sth->execute();
}
$t2 = time();
$sth->finish();

$sql2 = 'SELECT SQL_NO_CACHE COUNT(id) FROM article';
$sth = $dbh->prepare($sql2);
$t3 = time();
for($i=0;$i<$iters;$i++) {
    $sth->execute();
}
$t4 = time();
$sth->finish();
print "COUNT(*) " . ($t2-$t1) . " seconds\n";
print "COUNT(id) " . ($t4-$t3) . " seconds\n";
$dbh->disconnect();
Tabellen har ca 1 miljon rader och har ett par rätt stora fält.

Körningar (3):
Kod:
COUNT(*) 10.6 seconds
COUNT(id) 11 seconds
Testade även att selecta * mot att selecta alla fält. Här körde jag en LIMIT 100 iom att bandbredden blir en flaskhals annars. 1000 iterationer. 4 körningar
Kod:
* 5 seconds
fält 5.8 seconds
Vid en första anblick ser detta försumbart ut, dock blir siffrorna annorlunda när man tittar närmare på dem.

100,000 frågor på en tabell med 1,000,000 rader ger en diff på ungefär 3,6% (om jag kommer ihåg min lågstadiematte rätt).

I fallet med SELECT är skillnaden större, nämligen 13,8% med 1000 iterationer över 100 rader (den här växer då rätt snabbt till en betydande skillnad).
grazzy är inte uppkopplad   Svara med citatSvara med citat