Avatar billede dank Nybegynder
07. marts 2004 - 11:34 Der er 5 kommentarer og
1 løsning

performance: Hvad er mest skånsomt for serveren

Jeg har

navn, som er primary key.

Jeg skal indsætte en record, men kun hvis der *ikke* eksisterer en record med det navn i forvejen.

Hvad giver mindst belastning på mysql serveren

1:

INSERT INTO navn ...
Hvis fejl, så eksisterer der allerede en record ved det navn

2:
SELECT count(navn) from ... WHERE navn='abc';
Hvis 0, så indsæt record

Nogen input?
Avatar billede arne_v Ekspert
07. marts 2004 - 11:48 #1
Mit gæt: #1
Avatar billede arne_v Ekspert
07. marts 2004 - 11:49 #2
Vær iøvrigt opmærksom på at #2 ikke er 100% sikker medmindre du låser
tabellen (og så går performance ihvertfald i bund).
Avatar billede arne_v Ekspert
07. marts 2004 - 11:51 #3
Begrundelsen er at jeg ikek kan se hvorfor en fejlet INSERT vil koste mere end en
sucessfuld INSERT og så vil INSERT altid være hurtigere end SELECT+INSERT.
Avatar billede dank Nybegynder
07. marts 2004 - 12:38 #4
ja.. det ville også være mit gæt... kunne være der sad nogen måske derude og vidste at lige præcis en fejlet insert tog specielt meget, eller lignende.

Men jeg er enig, og det er måden jeg gør det på nu :)

svar?
Avatar billede arne_v Ekspert
07. marts 2004 - 12:41 #5
svar
Avatar billede arne_v Ekspert
07. marts 2004 - 12:45 #6
Mit 11:51:04 argument holder vist iøvrigt ikke helt vand.

Det må være:

(1-p(fejl))*t(INSERT ok) + p(fejl)*t(INSERT fejl)

versus:

t(SELECT COUNT) + (1-p(fejl))*t(INSERT OK)

hvilket kan reducers til:

p(fejl)*t(INSERT fejl)

versus:

t(SELECT COUNT)

Hvilket ikke kan garenters at være opfyldt. Men som jeg er overbevist
om er opfyldt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester