| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Optimering af MySQL SQL Fra : Harald | 
  Dato :  19-03-08 18:33 |  
  |   
            SELECT SQL_CALC_FOUND_ROWS boger.*, butikker.Navn, butikker.IdnrButikker, 
 butikker.Ferielukket, forfatter.NavnForfatter, forlag.NavnForlag FROM boger
 LEFT JOIN forfatter ON boger.forfatter = forfatter.idnrForfatter
 LEFT JOIN forlag ON boger.forlag = forlag.idnrForlag
 LEFT JOIN butikker ON boger.butiksid = butikker.butiksid
 WHERE AntalLager>0 AND Aktiv=1 AND VisBoger=1 AND (forfatter.NavnForfatter 
 LIKE "%hans%")
 ORDER BY forfatter.NavnForfatter, Titel, UdgivetAar, Pris
 LIMIT 0,25
 
 Jeg kører ovenstående på min MySQL 4.0.26 server og det tager ca. 2 
 sekunder, kan det på nogen måde gøres hurtigere? Vil en opdatering til MySQL 
 5.0 hjælpe?
 
 Det er SQL_CALC_FOUND_ROWS og ORDER BY der tager tiden, undlader jeg disse 2 
 tager det kun ca. 0.02 sek. men jeg har brug for dem begge.
 Jeg har forsøgt at oprette index men det gør ingen forskel.
 
 /H
 
 
  
            
             |   |   
            
        
 
            
         
           Per Koch (23-04-2008) 
         
	
            | Kommentar Fra : Per Koch | 
  Dato :  23-04-08 22:01 |  
  |   
            Er du sikker på, at det altid kun tager 0,02 sek?
 Hvis du umiddelbart forinden har kørt den første query, kan din server have 
 resultatet i sin cache - og så går det jo hurtigt næste gang.
 Hvis det altid er hurtigt med din query på 0,02 sek. synes jeg du skal smide 
 resultatet i en midlertidig tabel - evt. på HEAP hvis det er et begrænset 
 dataset i størrelsen. Så kan du efterfølgende trække fra denne tabel af med 
 forventeligt kort tidsforbrug.
 
 
 "Harald" <noname@nomail.dk> skrev i en meddelelse 
 news:47e14e46$0$90276$14726298@news.sunsite.dk...
 > SELECT SQL_CALC_FOUND_ROWS boger.*, butikker.Navn, butikker.IdnrButikker, 
 > butikker.Ferielukket, forfatter.NavnForfatter, forlag.NavnForlag FROM 
 > boger
 > LEFT JOIN forfatter ON boger.forfatter = forfatter.idnrForfatter
 > LEFT JOIN forlag ON boger.forlag = forlag.idnrForlag
 > LEFT JOIN butikker ON boger.butiksid = butikker.butiksid
 > WHERE AntalLager>0 AND Aktiv=1 AND VisBoger=1 AND (forfatter.NavnForfatter 
 > LIKE "%hans%")
 > ORDER BY forfatter.NavnForfatter, Titel, UdgivetAar, Pris
 > LIMIT 0,25
 >
 > Jeg kører ovenstående på min MySQL 4.0.26 server og det tager ca. 2 
 > sekunder, kan det på nogen måde gøres hurtigere? Vil en opdatering til 
 > MySQL 5.0 hjælpe?
 >
 > Det er SQL_CALC_FOUND_ROWS og ORDER BY der tager tiden, undlader jeg disse 
 > 2 tager det kun ca. 0.02 sek. men jeg har brug for dem begge.
 > Jeg har forsøgt at oprette index men det gør ingen forskel.
 >
 > /H
 >
 > 
 
 
  
            
             |   |   
            
        
 
            
         
           Harald (04-05-2008) 
         
	
            | Kommentar Fra : Harald | 
  Dato :  04-05-08 20:21 |  
  |   
            "Per Koch" <pk@perkoch.dk> skrev i en meddelelse 
 news:480fa374$0$15886$edfadb0f@dtext01.news.tele.dk...
 > Er du sikker på, at det altid kun tager 0,02 sek?
 > Hvis du umiddelbart forinden har kørt den første query, kan din server 
 > have resultatet i sin cache - og så går det jo hurtigt næste gang.
 > Hvis det altid er hurtigt med din query på 0,02 sek. synes jeg du skal 
 > smide resultatet i en midlertidig tabel - evt. på HEAP hvis det er et 
 > begrænset dataset i størrelsen. Så kan du efterfølgende trække fra denne 
 > tabel af med forventeligt kort tidsforbrug.
 
 Ja det er altid ca. 0,02 sek.
 Der kan være op til 150000 poster i resultatet og det stiger hele tiden, jeg 
 vil prøve at kikke på en midlertidig tabel løsning.
 
 /H
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |