ZinTeX Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Heisann! Har for tiden et problem med optimalisering av et relativt stort script med en god del hundre spørringer. Har funnet ut at det er noen få spørringer som gjør at alt går sørpetreigt. Dette er spørringer som er nøstet ( SELECT * FROM foo WHERE bar IN (SELECT bar FROM foo2 INNER JOIN foo3 WHERE foo2.id IS NOT NULL AND foo3.id IS NOT NULL). Tenkte derfor at det kanskje ville være lurt å lage dette om til et view, men etter mye knoting fant jeg ut at dette gikk like treigt. Er det slik at mySQL kjører spørringa viewet er laget av hver gang du henter noe ut fra viewet? Finnes det noen måter å få mySQL til å "lagre" spørringa slik at den ikke trenger å spørre hver gang? Det beste hadde vært et "view" som kun oppdaterte seg når hovedtabellen ble oppdatert og ikke hver gang man kjørte en spørring. Alternativet er jo å lage en ny tabell med tanke på spørringa. Dette gjør at man får flere tabeller å ta vare på og alle rader blir jo duplikater. Derfor tenkte jeg at det må være en bedre måte å gjøre dette på. Takker for svar! Lenke til kommentar
WhiteFire Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Det beste er nok om du unngår nøstede spørringer. Kontroller også at kolonnene du spør på er indekserte. Det vil gjøre en verden av forskjell! Lenke til kommentar
quantum Skrevet 17. februar 2010 Del Skrevet 17. februar 2010 Det beste er nok om du unngår nøstede spørringer. Kontroller også at kolonnene du spør på er indekserte. Det vil gjøre en verden av forskjell! Jepp, bruk explain plan for å se hva som skjer, og så lager du indexer på felt som dukker opp i planen med full table scan. http://dev.mysql.com/doc/refman/5.0/en/query-speed.html Eventuelt kan du lagre resultater av spørringer direkte i tabeller, f.eks. kunne du kjøre noe a'la drop table MY_STATIC_VIEWTABLE create table MY_STATIC_VIEWTABLE as select ... ; http://dev.mysql.com/doc/refman/5.0/en/create-table.html mysql har vel en select into variant også så du slipper å opprette tabellen hver gang ... men den er visst ikke helt standard. Lenke til kommentar
quantum Skrevet 18. februar 2010 Del Skrevet 18. februar 2010 Det beste er nok om du unngår nøstede spørringer. En liten ekstra-kommentar: Mange sub-spørringer kan skrives om til joins, og det kan også påvirke hastigheten. 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å