Avatar billede madssch Nybegynder
06. november 2006 - 19:50 Der er 1 løsning

Rekursiv udtræksliste

Hej Eksperter,

Jeg har i min MSSQL database bl.a. følgende tabel:

- PageID (Int, PK)
- PageRefID (Int)
- PageTitle (Nvarchar(50))

Jeg skal et sted i koden bruge et komplet udtræk af alt indhold fra denne tabel. Til formålet benytter jeg følgende rekursive funktion:

Function FnBuildMovePageOption (CurrentPageID, CurrentPageLevel)

    Set Query_pageList = objConnect.Execute("Select PageID, PageRefID, PageTitle From viewPage Where PageRefID = " & CurrentPageID & " And PageAreaID = " & Session("PageAreaID") & " " & strPageVisible & " Order by PagePriority")
   
        If Not Query_pageList.EOF Then
       
            Do until Query_pageList.EOF
           

                intLeftmenuPaddingLeft = CurrentPageLevel * 4


                For iIndent = 0 To intLeftmenuPaddingLeft
               
                    strSpace = strSpace & " "
                   
                Next
                   
               
                strPageList_Option = strPageList_Option & "<option value=""" & Query_pageList("PageID") & """"
               
                    If CInt(Query_pageList("PageID")) = CInt(intPageRefID) Then strPageList_Option = strPageList_Option & " selected=""selected"""
               
                strPageList_Option = strPageList_Option & ">" & strSpace & Query_pageList("PageTitle") & "</option>"
               

                strSpace = ""


                Call FnBuildMovePageOption (Query_pageList("PageID"), (CurrentPageLevel + 1))


            Query_pageList.MoveNext
            Loop
           
        Else
       
            CurrentPageLevel = (CurrentPageLevel / 4)
           
            strSpace = ""
           
        End If
       
    Set Query_pageList = Nothing

End Function

Funktionen virker, men problemet ligger i performance. Tabellen indeholder i skrivende stund 33 poster. Det tager ca. 6 sekunder at afvikle funktionen. Jeg tør ikke tænke på, hvad der sker, når tabellen indeholder 100 eller måske 200 poster! Problemet ligger formentlig i, at der oprettes lige så mange Select-statements som der er poster i tabellen til.

Kender nogen en alternativ måde at gøre dette på - eller måske kan se optimeringsmuligheder i den eksisterende funktion?
Avatar billede madssch Nybegynder
06. november 2006 - 21:09 #1
Undersøger hvor vidt Stored Procedures kan løse mit ptoblem.

Lukker.
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
Kurser inden for grundlæggende programmering

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