webForumDet fria alternativet

SQL hjälp

28 svar · 613 visningar · startad av sven · sida 2 av 2

svenMedlem sedan aug. 2001383 inlägg
#21

Ursäkta mig LarsG... ditt konto fylls naturligtvis oxå på....

Ni är för snabba för varandra :)

@ndersMedlem sedan juni 200032 969 inlägg
#22

En tilläggsfråga som primärt riktar sig till LarsG:

Jag har för vana att alltid skriva count(*), men jag ser att du använder count(fältnamn). Är det någon praktisk skillnad, är det ena SQL-standard men inte det andra, är det någon prestandaskillnad mellan de två eller är det helt enkelt en smaksak?

Mvh,
kunskapstörstande snabel

LaspMedlem sedan juli 200012 980 inlägg
#23

Japp sånt här gillar jag att se En utökad kunskapsöverföring.
Bra gjort.

PalleMedlem sedan apr. 20003 174 inlägg
#24

The Microsoft Jet database engine has special optimizations that allow COUNT(*) to be executed much faster than COUNT([Column Name]).

Källa

LarsGMedlem sedan dec. 200012 464 inlägg
#25

Det är en funktionell skillnad

count(*) räknar alla poster
count(kolumn) räknar de poster där kolumn inte är null

@ndersMedlem sedan juni 200032 969 inlägg
#26

Tack för länk, Palle, och för förklaring LarsG.

Den obligatoriska följdfrågan: Vad blir skillnaden om man, som i det här fallet, även hämtar fältets värde och använder group by? Kan alltså count(*) returnera ett felaktigt antal i detta fall?

Mvh

Engine^Medlem sedan dec. 20003 887 inlägg
#27

Count(*) returnerar inte felaktigt om du inte är på jakt efter ett annat resultat. Istället för att ange kolumnnamn brukar jag styra det med antingen HAVING eller WHERE... det brukar gå lika bra.

Jag har lite bekymmer att sätta mig in i varför man skulle använda Count(kolumn) om man bara har en count i frågan. :)

För övrigt så kan jag väl tillägga att i dom fall man använder Access och OleDb så är Count(*) betydligt bättre optimerat än Count(kolumn) enligt MSDN (här står även om null-fallet).

red.
Läste just länken från Palle... kanske lite onödig postning detta, men va fanken ;)

LarsGMedlem sedan dec. 200012 464 inlägg
#28

Jag har lite bekymmer att sätta mig in i varför man skulle använda Count(kolumn) om man bara har en count i frågan.

select pk.namn,count(fk.namn)
  from pk left join fk on pk.namn = fk.namn
 group by pk.namn

Då får man 0 på de namn som inte finns i fk-tabellen vilket kan vara av intresse.

Optimeringsmässigt så borde count(*) och count(namn) hanteras lika i de fall då namn är not null.

Engine^Medlem sedan dec. 20003 887 inlägg
#29

Alltid lika trevligt med upplysande information från dig, LarsG. :)

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)