|  | 		    
					
        
         
          
         
	
          | |  | DB hastighed Fra : WebLock
 | 
 Dato :  28-08-01 20:47
 | 
 |  | Jeg sidder og leger med noget CD-liste og har i første omgang lavet som
 beskrevet i 2'eren. Blev dog enig med mig selv, at dette ikke virker særlig
 overskueligt, så jeg lavede den om så den virker som beskrevet i 1'eren,
 også i håb om at der kom lidt mere hastighed i listen. Dette bevirkede dog
 at listen blev pi**e langsom. Gik fra 2 sekunder til 7 sekunder for at liste
 31 titler med ca. 31*120 indholds poster.
 Jeg har også prøvet med arrey, simpelthen at læse hele databasen ind i
 hukommelsen en gang for alle, i stedet for at den kontakter databasen for
 hver enkel post, men det gik endnu langsommere.
 Er der nogen der har nogle andre gode optimerings tips ?
 
 
 1) Tabel1 indeholder alle CD-titler og Tabel2 indeholder alt indhold og et
 "ref CD" felt, så man kan se hvilket indhold der hører til hvilke CD'er
 
 2) Tabel1 indeholder alle CD-titler og hver CD-titel har sin egen tabel med
 indholdet
 
 
 Ps: Skal lige siges at jeg har prøvet både med MS ACCESS og MySQL med præcis
 samme resultat
 
 
 
 
 |  |  | 
  Niels Andersen (28-08-2001) 
 
	
          | |  | Kommentar Fra : Niels Andersen
 | 
 Dato :  28-08-01 21:19
 | 
 |  | "WebLock" <REMOVEskummel@gadefejer.dk> wrote in message
 news:3b8bf511$0$1712$edfadb0f@dspool01.news.tele.dk...
 > 1) Tabel1 indeholder alle CD-titler og Tabel2 indeholder alt indhold og et
 > "ref CD" felt, så man kan se hvilket indhold der hører til hvilke CD'er
 
 Hmm... Hvordan gør du så med MySQL for at se dem alle?
 SELECT * FROM tabel1, tabel2 WHERE tabel1.cd=tabel2.refcd
 
 Husk at lave indexes på de felter, som du bruger i "where".
 
 --
 Mvh.
 
 Niels Andersen
 
 
 
 
 |  |  | 
  WebLock (28-08-2001) 
 
	
          | |  | Kommentar Fra : WebLock
 | 
 Dato :  28-08-01 21:55
 | 
 |  | 
 "Niels Andersen" <niels-usenet@myplace.dk> wrote in message
 news:L0Ti7.26350$Ay1.694737@news000.worldonline.dk...
 > "WebLock" <REMOVEskummel@gadefejer.dk> wrote in message
 > news:3b8bf511$0$1712$edfadb0f@dspool01.news.tele.dk...
 > > 1) Tabel1 indeholder alle CD-titler og Tabel2 indeholder alt indhold og
 et
 > > "ref CD" felt, så man kan se hvilket indhold der hører til hvilke CD'er
 >
 > Hmm... Hvordan gør du så med MySQL for at se dem alle?
 > SELECT * FROM tabel1, tabel2 WHERE tabel1.cd=tabel2.refcd
 >
 > Husk at lave indexes på de felter, som du bruger i "where".
 >
 > --
 > Mvh.
 >
 > Niels Andersen
 
 Har først denne streng:
 SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 
 Den bruger jeg til at hente CDtitlerne ud med, alt efter hvilken type
 (kategori) der bliver spurgt efter (f.eks. spil/film/apps)
 
 Har så en streng til der henter alt indhold ud der svarer til ID'et på den
 CDtitel der blev hentet i foregående streng:
 SELECT * FROM indhold WHERE refcd=" & rs("Id") & "
 
 
 
 
 
 
 |  |  | 
   Niels Andersen (29-08-2001) 
 
	
          | |  | Kommentar Fra : Niels Andersen
 | 
 Dato :  29-08-01 06:41
 | 
 |  | "WebLock" <REMOVEskummel@gadefejer.dk> wrote in message
 news:3b8c0512$0$1653$edfadb0f@dspool01.news.tele.dk...
 > Har først denne streng:
 > SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 
 Jeg gætter på at det der
 " & kategori & "
 er noget dit program/script erstatter med et kategorinummer?
 Det samme med nedenstående
 " & rs("Id") & "
 Right? Jeg synes i hvert fald ikke det give den helt store mening med SQL...
 :)
 
 > Har så en streng til der henter alt indhold ud der svarer til ID'et på den
 > CDtitel der blev hentet i foregående streng:
 > SELECT * FROM indhold WHERE refcd=" & rs("Id") & "
 
 Dvs. du laver en query for hver CD. Jeg tror det er bedre at hente det hele
 i én query.
 Måske sådan her:
 
 SELECT * FROM cdtitler,indhold WHERE cdtitler.cd=indhold.refcd AND
 kategori=<kategori>
 
 Nu erstatter du vel "*" med en liste over de felter du skal bruge, ik'?
 
 Og har du lavet indexes på de felter, du nævner i WHERE? (her cd, refcd og
 kategori)
 
 --
 Mvh
 
 Niels Andersen
 
 
 
 
 |  |  | 
    WebLock (29-08-2001) 
 
	
          | |  | Kommentar Fra : WebLock
 | 
 Dato :  29-08-01 08:52
 | 
 |  | 
 "Niels Andersen" <niels-usenet@myplace.dk> wrote in message
 news:pf%i7.26499$Ay1.721589@news000.worldonline.dk...
 > "WebLock" <REMOVEskummel@gadefejer.dk> wrote in message
 > news:3b8c0512$0$1653$edfadb0f@dspool01.news.tele.dk...
 > > Har først denne streng:
 > > SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 >
 > Jeg gætter på at det der
 > " & kategori & "
 > er noget dit program/script erstatter med et kategorinummer?
 > Det samme med nedenstående
 > " & rs("Id") & "
 > Right? Jeg synes i hvert fald ikke det give den helt store mening med
 SQL...
 > :)
 >
 > > Har så en streng til der henter alt indhold ud der svarer til ID'et på
 den
 > > CDtitel der blev hentet i foregående streng:
 > > SELECT * FROM indhold WHERE refcd=" & rs("Id") & "
 >
 > Dvs. du laver en query for hver CD. Jeg tror det er bedre at hente det
 hele
 > i én query.
 > Måske sådan her:
 >
 > SELECT * FROM cdtitler,indhold WHERE cdtitler.cd=indhold.refcd AND
 > kategori=<kategori>
 >
 > Nu erstatter du vel "*" med en liste over de felter du skal bruge, ik'?
 >
 > Og har du lavet indexes på de felter, du nævner i WHERE? (her cd, refcd og
 > kategori)
 
 Hmm ok, sådan har jeg aldrig set en sql streng være. Hvordan bestemmer man
 så, om den streng skal tage CDtitlen eller indholdet ud ? Har lidt svært ved
 at gennemskue den...
 
 Webber
 
 
 
 
 |  |  | 
     Niels Andersen (29-08-2001) 
 
	
          | |  | Kommentar Fra : Niels Andersen
 | 
 Dato :  29-08-01 09:57
 | 
 |  | "WebLock" <REMOVEskummel@gadefejer.dk> wrote in message
 news:3b8c9f27$0$7961$edfadb0f@dspool01.news.tele.dk...
 > > SELECT * FROM cdtitler,indhold WHERE cdtitler.cd=indhold.refcd AND
 > > kategori=<kategori>
 > >
 > > Nu erstatter du vel "*" med en liste over de felter du skal bruge, ik'?
 > >
 > > Og har du lavet indexes på de felter, du nævner i WHERE? (her cd, refcd
 og
 > > kategori)
 >
 > Hmm ok, sådan har jeg aldrig set en sql streng være. Hvordan bestemmer man
 > så, om den streng skal tage CDtitlen eller indholdet ud ? Har lidt svært
 ved
 > at gennemskue den...
 
 Svært at forklare, når ikke jeg ved hvordan dine tabeller ser ud. Men lad os
 sige, at de ser sådan her ud:
 
 cdtitler:
 cd, titel, kunstner, kategori
 
 indhold
 cdref, track, name
 
 Altså, "cd" og "cdref" er et nummer el. lign. der identificerer den enkelte
 CD.
 "track" er nummeret på CD'en (1, 2, 3 osv...)
 "name" er navnet på tracket.
 
 Hvis du så siger
 SELECT * FROM cdtitler,indhold WHERE cd=cdref WHERE kategori=<kategori>
 Så får du lige så mange rækker, som der er tracks. Hver række vil indeholde
 cd, titel, kunstner, kategori, cdref, track og name.
 Så er det jo bare lidt træls, at du dels får både cd og cdref (som jo er
 ens), men især at "titel" og "kunstner" er gentaget for hvert track.
 
 Så kan du gøre sådan her:
 Først en liste over CDer: SELECT cd, titel, kunstner FROM cdtitler WHERE
 kategori=<kategori>
 Og så en liste over tracks:
 SELECT cd, track, name FROM cdtitler, indhold WHERE cd=cdref AND
 kategori=<kategori>
 
 Så har du klaret det hele med to queries, og du har ikke fået mere, end du
 skal bruge.
 
 --
 Mvh.
 
 Niels Andersen
 
 
 
 
 |  |  | 
      WebLock (29-08-2001) 
 
	
          | |  | Kommentar Fra : WebLock
 | 
 Dato :  29-08-01 11:32
 | 
 |  | --- kom til at sende det med email i stedet :) ---
 
 Ok - tror jeg vil prøve at lege med det. Tak fordi du tog dig tid til at
 lave et så fyldestgørende svar !
 
 Mvh:
 Webber
 
 
 
 
 
 |  |  | 
    Jonas Delfs (01-09-2001) 
 
	
          | |  | Kommentar Fra : Jonas Delfs
 | 
 Dato :  01-09-01 16:12
 | 
 |  | 
 
            "Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
 news:pf%i7.26499$Ay1.721589@news000.worldonline.dk...
 > > SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 >
 > Jeg gætter på at det der
 > " & kategori & "
 > er noget dit program/script erstatter med et kategorinummer?
 Jeg troede du havde rodet med ASP? :)
 Ikke at jeg har, men det der er helt sikkert ASP.
 --
 Mvh./Best Regards
 Jonas Delfs, http://delfs.dk |  |  | 
     Niels Andersen (01-09-2001) 
 
	
          | |  | Kommentar Fra : Niels Andersen
 | 
 Dato :  01-09-01 21:36
 | 
 |  | "Jonas Delfs" <jonas@nospam.delfs.dk> wrote in message
 news:9mqtv0$cs2$1@sunsite.dk...
 > > > SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 > > Jeg gætter på at det der
 > > " & kategori & "
 > > er noget dit program/script erstatter med et kategorinummer?
 >
 > Jeg troede du havde rodet med ASP? :)
 > Ikke at jeg har, men det der er helt sikkert ASP.
 
 Ja, det er efter al sandsynlighed en stump ASP. Men klippet ud på den måde
 ser det da enormt dumt ud, og man skal de lige tænke sig om en ekstra gang
 før det giver mening. :)
 
 Så vidt jeg husker er "&" det tegn man bruger i Visual Basic til at
 sammensætte strenge med. Og Visual Basic skulle være det man "normalt" laver
 ASP med. Og dermed er der en god chance for, at det er ASP.
 
 Men det, jeg egentlig ville frem til er, at dette:
 
 SELECT * FROM cdtitler WHERE kategori=" & kategori & "
 
 ikke giver den store mening, det skulle nærmere skrives sådan:
 
 sql = "SELECT * FROM cdtitler WHERE kategori=" & kategori & " ORDER BY id"
 
 eller fx. sådan:
 
 SELECT * FROM cdtitler WHERE kategori=<kategori>
 
 --
 Mvh.
 
 Niels Andersen
 
 
 
 
 |  |  | 
 |  |