"Lars Bo Wassini" <lars@wassini.(dk)> skrev i en meddelelse
news:3b5f1d5a$0$387$edfadb0f@dspool01.news.tele.dk...
> "Allan Ebdrup" <ebdrup@ti-fire.dk> wrote in message
> news:9jkudd$2sr1$1@news.cybercity.dk...
> > "Peter" <pingking@get2net.dk> skrev i en meddelelse
> > news:9jkq4r$o92$1@news.net.uni-c.dk...
> > > > Databaseforespørgsler er noget af det "dyreste" du kan lave. Man bør
> kun
> > > > have 1 max 2 pr. ASP side for at få god performance/scaleability.
Men
> > test
> > > > det - så vil du se hvad jeg mener.
>
> Jeg har efterhånden fået lavet mange forskellige løsninger på dette
problem
> (ikke alle lige godt
>
> Jeg har dog fundet en løsning, der kræver lidt arbejde ved redigering af
> indlægene (indsæt/slet), me til gengæld er den absolut hurtigste at få ud
> fra en database.
>
> Jeg har tilføjet 2 ekstra kolonner: Order + Indent
>
> | msgID | Reference | Subject | Name | Order | Indent
> --------------------------------------
> 1 NULL Subject1 Joe 1 0
> 2 NULL Subject2 Jane 5 0
> 3 1 Subject3 Jim 2 1
> 4 1 Subject4 John 4 1
> 5 3 Subject5 Janet 3 2
>
> Disse skal self. vedligeholdes, men det tager ikke lang tid, da brugeren
> alligevel er ved at vente på et vindue lukker eller siden skifter etc..
>
> Derved kan hele tråden trækkes ud med EEN sql sætning:
>
> SELECT * FROM forum ORDER BY Order
>
> og derefter løbe den igennem og bygge den op vha. Indent.
>
> Rimelig simpelt!
Hej Lars
Du skulle kigge på diskussionsforummet på
www.ibuyspy.com (i portal
eksemplet), der kan du se en mere effektiv metode. Det bliver unødvendigt
meget arbejde med at vedligeholde dit "Order" felt hvis der indsættes
tilfældige steder i tæet. Tænk på hvad der sker når der er 1.000.000 poster
i databasen.
Jeg har faktisk talt Cris Brown (SQL-MENA) som er en af Microsofts folk bag
MSSQL Server om problemerne med hierakiske træstrukture i en relationel
database. Det ville være oplagt at lave et clustered index der laver dit
"Order" felt automatisk (dog a la diskussionsforummet i IBuySpy eksemplet)
og så lave et hierakisk XML udtræk. Alle informationerne til at opbygge
hierakiet er der jo allerede til stede idet det er en selvreferende tabel
med feltet "Reference" (plejer at kaldes "Parent").
Microsoft gutten sagde at XML udviklingsafdelingen var meget interesseret i
mit forslag (jeg sendte en mail med beskrivelse efter aftale) og at han
ville vende tilbage hvis der var nyt i sagen - jeg har ikke hørt fra ham
siden.
MVH
Allan Ebdrup, 10-4 ApS
P.S. Ved samme lejlighed talte jeg med Cris Brown om paging - det kan gøres
bedre end valget mellem en serverside cursor, brug af en temorær tabel eller
brug af SQL "top" kommandoen (hjælper ikke hvis det er den sidste side man
vil have fat i). Og et sidste problem med paging - hvad hvis du har et ID på
en record og gerne vil have fat i hele den side hvor den record er på ?