04. juli 2005 - 11:14Der er
5 kommentarer og 1 løsning
Performance: Joins vs. felt i tabel
Hejsa
Vi har i afdelingen en mindre diskution kørende omkring den performancepris man betaler i forbindelse med SQL Joins.
Lad os antage følgende: Én tabel har oplysninger omkring et 'dokument' - Nogle dokumenter har et resume tilknyttet, andre har ikke.
Normaliseringsreglerne siger nu, at der skal oprettes en tabel til disse resuméer (da de ikke altid er <> null), hvorefter man så joiner de to tabeller på f.eks DocumentID.
Mine spørgsmål: Hvad koster denne JOIN? Er den gratis grundet indexer eller hvad? Og hvis den er gratis, kan man så bare dele sin database op i tusindvis af tabeller og joine på kryds og tværs uden performancetab (forudsat at de korrekte indexer er oprettet).
som jeg husker normaliserings reglerne er der ikke noget krav om at felter som kan indeholde skal ud i en anden tabel !
database performance er et meget meget komplekst emne, generelt siger man at en JOIN uden index er meget dyr og at en JOIN med index koster en lille smule, men hvis du skal vide det med sikkerhed skal du ind og sammenligne eksekverings planer og teste med forskellige løsninger
Hej Arne Den er god nok... Hvis et felt kan indeholde nullværdier, skal denne værdi trækkes u di en særskilt tabel med en kopi af primærnøglen. (jeg mener det er 2. normalform)
Jeg har arbejdet proffessionelt med Oracle databaser i 20 år, og ved at DE ikke er ligeglade med i hvilken rækkefølge tabellerne i FROM tages.
Det er rigtigt at i ON og Where skal der anvendes index
Ved at starte med den mindste tabel (læses bag fra i Where og ON) øges hastigheden mærkbart. (under forudsætning af at der er index.)
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.