Jump to content
Sign in to follow this  
sfenne

Fleksibel- og hurtig sql-spørring?

Recommended Posts

Noen tips til å hvordan forbedre spørringene mtp. fleksibilitet, hurtighet?

 

Jeg kan gi et tips til lite effektiv sql-spørring;

 

$sql = mysql_query("select fooCol,fooName from fooTable order by id LIMIT 300");
 while($row = mysql_fetch_array($sql)){
   $getMoo = mysql_fetch_array(mysql_query("select mooThong from mootable where id = fooCol"));
   echo " ".$row["fooName"]." ".$getMoo["mooThong"]." ";
 }

 

- Hvordan kan man gjøre koden ovenfor bedre? JOIN, i loop?

 

- Vil det være nyttig å lage funksjoner for sql-spørring i en cfg-fil som inkluderes, istedenfor en drøss med spørringer rundtomkring?

 

Håper på svar, ellers takk! :)

Edited by sfenne

Share this post


Link to post

Dette var en smule forvirrende, når du lurer på hvordan du kan beste optimalisere spørringer så er det beste om du viser oss tabellstrukturene og markerer primær og fremmednøkkel.

 

Ut fra det jeg ser så antar jeg at du er på jakt etter LEFT JOIN?

Det vil si at du henter fra tabell moontable dersom den har en tilsvarende id. LEFT JOIN er videre en foretrukken måte å joine en spørring på dersom det ikke er andre forhold til stede.

 

Spørringen din kan da muligens se slik ut:

 

SELECT fooTable.fooCol, fooTable.fooName, moontable.mooThong

FROM fooTable

LEFT JOIN mootable

ON fooTable.fooCol = moontable.id

LIMIT 300

 

Ut fra echo'en din ser det ikke ut som du bruker fooCol - hvis dette er tilfellet kan du droppe den fra SELECT ....

 

Over til optimalisering så er dette igjen avhengig av tebellstrukturen din - dvs. definering av felter, indekserte felter og tabelltype. Du kan alltid kjøre EXPLAIN foran en spørring for å se hva MySQL forventer at den må gjøre. Da får du opp en oversikt over blandt annet hvor mange rader MySQL forventer å finne. Stemmer dette tallet ganske bra, så er det ikke så ille. Ellers må du nok indeksere eller gjøre noen felter unike. Eventuelt endre hele tabellen din. Når det gjelder litt avansert bruk av MySQL og optimalisering vil jeg på det sterkeste anbefale High Performance MySQL av Jeremy D. Zawodny, Derek Balling. Den tar for seg veldig mye nyttig. Det er også viktig med litt grunnleggende databaseforståelse.

 

Over til andre delen av spørsåmplet ditt, om du burde lage en config fil med spørringer eller ha en drøss med spørringer.

 

Svaret der er ganske åpenbart. Dersom du har mange like spørringer burde disse samles under en egen fil, funksjon eller class. Dersom spørringene varierer så er dette selvfølgelig umulig eller mer komplisert enn å ha spørringer her og der.

 

Videre burde du alltid ha egene class'er for MySQL, slik at du lett kan gå over fra mysql_ til f.eks. mysqli_ eller en annen database løsning. Det vil si at du samler alle mysql funksjonene i en egen fil, og bruker f.eks. $sql->query("spørring");

som da sender spørringen videre til mysql_query().

 

Lykke til!

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...