Avatar billede Slettet bruger
30. september 2010 - 09:59 Der er 6 kommentarer og
2 løsninger

Test af forekomst - uden at hente data frem ?

Jeg vil teste om der er oprettet nogen rækker med et bestemt iD.
- men ikke hente disse, kun se om der ER nogen.

Enten er der ikke nogen, og så kan min kode fortsætte, eller også er der en hulens masse, og i så fald skal brugerens advares..

Jeg har altså ikke i sinde at hente nogen af rækkerne, kun oplysningen om at de findes.

Min bekymring er at databasen sætter det helt store maskineri igang...
- hvordan kan jeg undgå det ?

Intet dataudtræk specificeret:
SELECT count(iD) FROM history WHERE iD=123
eller måske et begrænset udtræk:
SELECT iD FROM history WHERE iD=123 LIMIT 1
eller noget helt tredie ?
Avatar billede -mundi- Nybegynder
30. september 2010 - 10:25 #1
Avatar billede showsource Seniormester
30. september 2010 - 10:27 #2
Du kan jo ikke lave et tjek i db, uden en qquery ?

Selv ville jeg foretrække den sidste med LIMIT 1

I hvilken forbindelse skal det tjekkes ?
Avatar billede Slettet bruger
30. september 2010 - 11:22 #3
#1:
Det ser ikke ud til at man kan udføre exists() direkte, kun på en sub-query:
SELECT EXISTS(SELECT iD FROM history WHERE iD=123)
- og så er jeg jo (næsten) lige vidt...
- med mindre den bruger "short-circuit", og returnerer true ved første forekomst. I så fald svarer det vel til LIMIT=1

#2:
Brugeren er ved at ændre sin "profil-type" og skal advares om at det betyder at hun mister sin "history", men kun hvis hun HAR en history (og ikke er en helt ny bruger)

Det ER ikke det helt store problem, bare en "principiel tvivl" om man kan teste for eksistensen af data, uden at databasen gør sig klar til at levere dem...
Avatar billede -mundi- Nybegynder
30. september 2010 - 11:32 #4
Exists() er naturligvis optimeret til netop den slags forespørgsler, og laver mindst muligt arbejde. Det er muligt de andre queries bliver ændret af query optimizeren (hvis der er en sådan i mysql).
Exists skulle være den optimale metode til at checke om der findes data.
Avatar billede Slettet bruger
30. september 2010 - 12:32 #5
Oki doke. Dén bruger jeg så : )
- smid et "svar" så du kan få din bekomst.
Avatar billede Slettet bruger
15. oktober 2010 - 11:24 #6
-mundi- smid et svar, så vi kan få lukket
Avatar billede -mundi- Nybegynder
15. oktober 2010 - 11:27 #7
Har allerede smidt et svar, men laver da gerne et til :-)
Avatar billede Slettet bruger
15. oktober 2010 - 11:38 #8
Det havde du også, sorry : )
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