Är det någon skillnad i prestanda på dessa två frågor? De gör ju precis samma sak. Nej då, ingen skillnad alls. Det är bara olika sätt att skriva en inner join, där det andra sättet är ANSI standard. Beroende på vilken revision av ANSI man hänvisar till... Nej, det beror inte på några revisioner. Du har rätt, jag har fel, hade för mig att Join inte var definierat i SQL 92 nämligen, sorry. äremot är det väl skillnad i prestandan om man skriver: OK. Säger den något om varför bägge sätten finns, eller om framtiden? Är bägge samma nivå i standarden (vet inte vad det heter i SQL 99, men typ Entry Level confromance i SQL 92)? Om man inte stöder bägge sätten, hur 'conformant' är man då? I sql 92 så är syntaxen med implicit join entry level. De där två frågorma kan ge olika resultat så en prestandajämförelse är nog inte så relevant. > Så vitt jag vet så finns det väl ingen DBMS som uppfyller alla krav i core sql-99 Om man är intresserad av prestandan kan man ju få reda på det mesta med query-analysern. Natural join ingår inte heller i Core. OK. Intressant. Bad precis min chef om tillåtelse att beställa SQL-2 och SQL-3 från ANSI. Finns det möjlighet att titta på vad som diskuterats fram i den kommande standarden än så länge? Lite olika ISO-dokument om SQL 200x (och lite annat)Två frågor som gör samma sak. Skillnad i prestanda?
<code>
Select tOrder.dateOrder, tUser.USerID
From tOrder, tUser
WHERE tOrder.userID=tUser.userID
AND
tUser.userCompanyID=1
</code>
och
<code>
SELECT tOrder.DateOrder, tUser.UserId
FROM tOrder INNER JOIN
tUser ON tOrder.UserId = tUser.UserId
WHERE (tUser.UserCompanyId = 1)
</code>
/RickardSv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Båda finns med i CORE SQL 99.
I SQL 92 (som dock inte gäller nu) fanns båda med.Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
SELECT tOrder.DateOrder, tUser.UserId
FROM tOrder LEFT JOIN
tUser ON tOrder.UserId = tUser.UserId
WHERE (tUser.UserCompanyId = 1)
Eller
SELECT tOrder.DateOrder, tUser.UserId
FROM tOrder RIGHT JOIN
tUser ON tOrder.UserId = tUser.UserId
WHERE (tUser.UserCompanyId = 1)
Frågan är vilket som är bäst i det här fallet. Någon som vet?Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
En explicit join är intermediate level.
I SQL 99 så finns det bara CORE level och ett antal 'features' som är grupperade i olika paket. Som sagt så ingår både typerna av join i CORE. Det finns några ytterligare typer av join (cross join, full join och union join ) som inte ingår i core sql 99.
Så vitt jag vet så finns det väl ingen DBMS som uppfyller alla krav i core sql-99.
Båda varianterna finns med i sql 2003 och det har aldrig varit någon diskussion om att ta bort någon.
Anledningen till att båda finns var väl att man ville styra upp hur man skrev outer join och då var det svårt att få till en bra lösning om man skulle fortsätta med ange joinvillkoren i where.Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Inte vad jag vet heller nej. Natural join är väl en sak som inte stöds särskilt mycket...Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Där kan man också se om sql-server tycker att olika syntax tolkas på samma sätt.
/johan/Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Däremot så finns det en varrinat där man kan skriva
a join b using (column,...)
som ingår i core och som inte stöds av många dbms.Sv: Två frågor som gör samma sak. Skillnad i prestanda?
Sv: Två frågor som gör samma sak. Skillnad i prestanda?
http://www.jtc1sc32.org/sc32/jtc1sc32.nsf/DocumentsView?OpenView&Start=1