Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...