Avatar billede madiedk Nybegynder
10. september 2008 - 11:24 Der er 10 kommentarer og
1 løsning

hvordan foregår en søgning rent teknisk

Hej

jeg er nysgerrig på hvordan en database søger efter data når man giver den forespørgsel?
hvordan finder den det så hurtigt selvom der er 10 mio. records. er det noget med binary tree og indeksering? er der nogen der kan give en detaljeret forklaring eller henvise til et sted hvor man kan læse om det?
Avatar billede teepee Nybegynder
10. september 2008 - 12:07 #1
http://en.wikipedia.org/wiki/Binary_search_tree
se også hash, og nej, det kan ikke ryges
Avatar billede madiedk Nybegynder
10. september 2008 - 13:11 #2
tak

men har undersøgt lidt selv og fundet ud af at det vidst ikke er binary tree men noget der hedder b-tree sam databaser typisk bruger. så er lidt forvirret nu?
Avatar billede martinlind Nybegynder
10. september 2008 - 17:27 #3
tror

binary tree = b-tree

Men de fleste db'er søger hurtigt HVIS du har et index eller går det ikke så hurtigt, så MS-SQL/ORACLE/Firebird og hvad de ellers hedder de bruger index'er til at gøre det hurtigt.
Avatar billede madiedk Nybegynder
10. september 2008 - 19:33 #4
hvad er et index, er det noget med primære nøgler?
Avatar billede arne_v Ekspert
10. september 2008 - 23:45 #5
B tree er ikke binary tree !

Et database traee page har mange flere leafs end 2.

Et B tree er specielt ved den maade den splitter en fuld page paa for at holde det balanceret.

http://en.wikipedia.org/wiki/B-tree har lidt om det.
Avatar billede arne_v Ekspert
10. september 2008 - 23:47 #6
Der er (i praksis) altid index paa primaer nogler, men man kan og boer lave index paa andre
felter.

Et index fungerer ligesom et stikord register i en bog. Uden index er man noed til at
laese alle sider i bogen igennem for at lede efter informationen. Med index slaar man op i det
og ser hvilken side informationen staar paa og finder det dermed meget hurtigere.
Avatar billede arne_v Ekspert
10. september 2008 - 23:48 #7
Mna bruger binary trees for in memory strukturer fordi det er optimalt men ikke
binary tress for on disk strukturer fordi det ikke er optimalt.
Avatar billede madiedk Nybegynder
11. september 2008 - 13:22 #8
okay, tak igen for svaret arne_v (Det er jo vanvittigt så meget du har styr på) et sidste spørgsmål så der point:
1. hvordan laver man index på andre felter i praksis?
Avatar billede arne_v Ekspert
11. september 2008 - 13:35 #9
Hvis man har et database admin GUI tool saa saetter man bare flueben udfor kolonnen.

I SQL saa:

CREATE INDEX indexnavn ON tabelnavn(kolonnenavn)
CREATE INDEX indexnavn ON tabelnavn(kolonnenavn1,kolonnenavn2)
CREATE UNIQUE INDEX indexnavn ON tabelnavn(kolonnenavn)

alt efter hvad du vil.
Avatar billede madiedk Nybegynder
14. september 2008 - 13:53 #10
okay tak, arne_v smid et svar, det hjalp meget. lige at få det bekræfter jeg havde læst
Avatar billede arne_v Ekspert
14. september 2008 - 14:39 #11
svar
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