Redak Tøren Skrevet 10. september 2008 Del Skrevet 10. september 2008 Dette har skapt hodebry for meg. Jeg skal lage en søkemotor som leverer resultat fra forskjellige tabeller. Så langt, så greit. Men problemet oppstår når jeg vil sortere resultatet uavhengig tabell etter dato. Tabellene er av forskjellig omfattelsesgrad. For eksempel så har en av dem flere inner joins, enn andre. Dette forhindrer meg da i å foreta en UNION. Jeg bruker ADO recordset som har følgende parametre: objRecordset.Open source,actconn,cursortyp,locktyp,opt Der kan jeg bare bruke en av tabellene (henter SQL-setningen) i source så vidt meg bekjent. Må jeg bruke AddNew-metoden i en array for å få lagt til rader fra flere tabeller? Jeg føler det blir for omfattende og kan sakke serveren. Finnes det enklere metoder / praktiske eksempler på hvordan andre har løst dette? Jeg har søkt en del på nettet, men kommer ikke frem til noe som løser problemet. Lenke til kommentar
Corvinus Skrevet 18. september 2008 Del Skrevet 18. september 2008 (endret) Ville kanskje startet med å lage et view i dbms, hvor du kjører en større spørring og knytter tabellene sammen, og deretter lager en spørring på kodenivå mot den spørringen som behandler den spørringen som en egen table igjen, hvor du kan gjøre selve sorteringen. Hvis du har behov for å gjøre mye sortering av tabellene på forhånd basert på user input, så kan du iallefall gjøre relasjonene på forhånd i et view, og gjøre det klart på sortering på visse verdier igjennom kodenivå. På denne måten vil også serveren ta mye av load på sin side, og kjøre ting mye raskere enn igjennom dynamiske spørringer på kodenivå. Vet ikke om det hjelper deg noe, bare spontane tanker rundt det du skrev. Endret 18. september 2008 av Corvinus Lenke til kommentar
Redak Tøren Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 Foreløpig løsning var å lagre resultatet av spørringen i en session, som leseren deretter kan bla gjennom i et recordset. Dette halverte lastetiden, men fortsatt føler jeg det tar for lang tid. 0,7 sekunder hvis søkeresultatet er oppe i max som er på rundt 24.000 rader. Det er tellingen av radene som tar tid, mens den faktiske spørringen bare henter ut de radene det blir spurt om. (som kjent laster en standard SQL-spørring alle radene inn i recordset selv om du bare skal bruke en mindre del av dem per side). Takker for svar. Jeg burde kanskje lagt til at dette er klassisk ASP. Har du noen gode ressurslinker? Mange takk Lenke til kommentar
Corvinus Skrevet 18. september 2008 Del Skrevet 18. september 2008 Definitivt best å finne en måte som bare spør etter rader som skal vises ja hvis responstid er viktig. I MySQL har du jo LIMIT du kan bruke: http://php.about.com/od/mysqlcommands/g/Limit_sql.htm Som gjør det enkelt å bare hente ut antall resultater som en tallverdi/integer, og deretter bare laste inn de resultatene dynamisk som du vil vise. Har ikke funnet noen særlig god løsning på erstatning av LIMIT bruk i MSSQL, nærmeste funksjon er vel TOP som jeg har improvisert litt med tidligere, men mer knotete å bruke. Fant en side her som kanskje kan hjelpe deg: http://www.planet-source-code.com/vb/scrip...50&lngWId=5 Ellers mente jeg bare at det er en god ide med store spørringer å få DBMS til å gjøre mest mulig av det tunge arbeidet, enten det er mysql eller mssql man bruker som løsning. Dette ved å bruke views som er stort sett det samme som midlertidige tabeller, bare forhåndslagret i databasesystemet/dbms. Er også enklere å få oversikt og separere litt på denne måten. Jeg har mange ganger knyttet store tabeller mot hverandre på denne måten, opp til 6-8 i 1-2 store spørringer, hvor jeg etterpå kunne forholde meg til 1 tabell/view på kodenivå som et resultat. Dette er også mye raskere enn å sende dynamisk spørring til dbms og vente på svar, iallefall med veldig store spørringer. Er bare å google litt på sql views hvis du trenger litt info på det, er veldig handy å kunne. Jobber daglig nesten med klassisk ASP jeg også for en av mine klienter, pleier egentlig å bare bruke w3schools som kjapp ressurs når jeg glemmer en og annen funksjon, har ikke så mange andre gode ressurser lagret egentlig. Et par direktelinker: w3schools.com/asp/ w3schools.com/vbscript/ w3schools.com/sql/ Lenke til kommentar
Redak Tøren Skrevet 18. september 2008 Forfatter Del Skrevet 18. september 2008 Ja, w3Schools er en grei kilde til SCL og VbScript og jeg bruker den selv. Vanligvis spør jeg med SELECT TOP 'visninger per side', og videre bruker jeg et argument i WHERE for hvilken rad spørringen skal starte fra og stoppe på. Dette blir så lastet inn i et recordset, og kun de radene det gjelder belaster serveren. Dessverre så må det jo utføres et søk i dette tilfellet, og dette søket må gå gjennom hele tabellen. Selv om jeg lagrer resultatet i en session og blar gjennom dette med recordset, oppnår jeg bare halvert lastetid. Og dette uten å ha joinet flere tabeller Men nå ser jeg at jeg har vinklet meg bort fra problemstillingen som var utgangspunktet i tråden, hehe. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå