Schrift
[thread]3637[/thread]

doppel-INSERT vermeiden durch locking (Seite 3)



<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten
Strat
 2005-12-22 17:24
#33769 #33769
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
nebenbei:
[sql]SELECT count(*) FROM tabelle WHERE x ='y';
[/sql]
verschwendet bei fast allen datenbanken nur unnoetig zeit. count immer nur auf eine spalte (idealerweise auf den primaerschluessel oder auf 'x') ausfuehren und nicht auf *, z.B.
[sql]SELECT count(id) FROM tabelle WHERE x ='y';
[/sql]\n\n

<!--EDIT|Strat|1135265124-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
pq
 2005-12-22 18:49
#33770 #33770
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Strat,22.12.2005, 16:24]nebenbei:
[sql]SELECT count(*) FROM tabelle WHERE x ='y';
[/sql]
verschwendet bei fast allen datenbanken nur unnoetig zeit. count immer nur auf eine spalte (idealerweise auf den primaerschluessel oder auf 'x') ausfuehren und nicht auf *, z.B.
[sql]SELECT count(id) FROM tabelle WHERE x ='y';
[/sql][/quote]
echt? das mag ich jetzt so gar nicht glauben...
denn bei der funktion count() ist das argument ja völlig schnuppe,
und ich würde mal behaupten, mysql z.b. optimiert das weg. bei MyISAM sowieso...

hast du da einen link, wo man sowas nachlesen kann?\n\n

<!--EDIT|pq|1135270185-->
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2005-12-22 18:57
#33771 #33771
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Taulmarill,22.12.2005, 15:16]2. verhalten sich transaktionen bei sqlite ein bischen anders. wenn man bei sqlite eine transaktion anfängt, ist die datei automatisch gelockt. bei postgres z.B. muss man das noch extra bei begin der transaktion machen.[/quote]
naja, wie die sql-syntax genau aussieht, mag sich von DBS zu DBS unterscheiden,
aber das spricht doch nicht gegen transaktionen.
sperrt sqlite eigentlich wirklich die datei? kommt wohl auch drauf
an, ob man shared oder exclusive haben will.
und bei postgres muss man explizit locken? ich denke, da setzt man
auch nur den isolation level, oder?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
Strat
 2005-12-22 23:16
#33772 #33772
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
habs vor einiger zeit mal bei groesseren tabellen in kombination mit subselects ausprobiert (war sybase, db2 und noch irgendwas). aber stimmt, hier waere eine optimierung einfach und sinnvoll, also wird sie wohl mittlerweile jemand gemacht haben.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Strat
 2005-12-22 23:19
#33773 #33773
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
bei sqlite ist sogar folgendes seltsames verhalten:
Code: (dl )
1
2
3
4
5
6
7
my $sql = "select * from x";
my $sth = $dbh->prepare($sql)->execute(); # fehlerabfangen vergessen...
while (my $row = $sth->fetchrow_hashref()) {
$dbh->do("UPDATE x set y='z' WHERE id=" . $dbh->quote($row->{id})
or die "Error in sql: $DBI::errstr\n";
} # while
$sth->finish();

hier schlaegt das update fehl, weil die tabelle exklusiv gelockt ist (sqlite3)
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< |< 1 2 3 >| >> 25 Einträge, 3 Seiten



View all threads created 2005-11-06 21:51.