arne har ganske ret, resultatet variere mellem de forskellige databaseplatforme, i SQL Server 6.5 var en IN mere effektiv end en JOIN - men i senere versioner er det omvendt.
Faktisk så er forskellen i effektivitet minimal - specielt hvis du sørger for, at have indekseret de kolonner som du joiner over eller har som where-betingelse.
Mht test - du skal lige huske, at du ikke blot kan køre 1000 queries og så regne med det som resultat. Du skal i stedet kigge på cost, fysisk i/o og eksekveringsplaner for queriene for at se den reelle forskel - ellers risikerer du at blive snydt af cache, readahead o.l. indbyggede optimeringsting. I effektivitetsmåling kan du nemlig ikke blot gå ud fra tidsforbruget - du skal i stedet kigge på den totale belastning querien giver, ellers passer din vurdering ikke hvis der kører mange samtidige queries.
Værktøjet til det er med i SQL Server (en funktion i Query Analyzer der tillader at du sammenligner effektiviteten af 2 eller flere queries - Show Estimated Execution Plan) og jeg mener at der nu er noget tilsvarende i Oracle 9i's klient omend det sidst jeg kiggede ikke kunne lave en sammenligning af planerne.
Synes godt om
Ny brugerNybegynder
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.