Avatar billede kongfjong Nybegynder
24. november 2005 - 20:26 Der er 4 kommentarer og
1 løsning

Forbedring af MySQL forespørgsler

Jeg har 'ude i byen' ladet mig fortælle at man kan forbedre sine MySQL forespørgsler mht. den load-tid man bruger på kald til databasen. Jeg har en side, www.fmground.dk, som jeg gentagne gange har syntes var for langsom. For det meste har jeg skudt skylden på udbyder, men jeg har aldrig været 100% tilfreds.

Da jeg så hørte at det kunne skyldes at mine kald til databasen måske var 'for langsomme' og ineffektive, ville jeg høre her på siden om nogle folk har nogle idéer til en forbedring af mine database kald.

Typisk kalder jeg databasen således:

$sql= "SELECT * FROM tabel WHERE kolonne > $variabel ORDER BY kolonne DESC LIMIT 0, 1";
$sql_res= mysql_query($sql, $forbindelse) or die(mysql_error());

Hvor $forbindelse er et ekstern php script med info om database osv.

Jeg har ladet mig fortælle, at man kan 'snyde' og undgå at man ska bruge flere linjer, og generelt bare få database forespørgslerne til at belatste serveren mindre.

Mit spørgsmål er så hvordan?:)
Avatar billede Slettet bruger
24. november 2005 - 20:44 #1
Et væsentligt skridt på vejen til at effektivisere sin database er at oprette indekser på de felter, man udvælger på eller sorterer efter. Prøv at læse i manualen (på engelsk) eller læs den gode introduktion her på exp: http://exp.dk/artikler/6

Hvad du mener med "snyde" ved jeg ikke lige, men hvis man skal slå noget op i flere tabeller på samme tid, bør man ofte samle det til en query.

Derudover kan det koste lidt kræfter at hente alle felter fra en tabel, hvis man egentlig kun skal bruge et eller to af dem, så prøv at undgå SELECT * men brug i stedet SELECT felt1, felt2
Avatar billede kongfjong Nybegynder
25. november 2005 - 23:57 #2
Hvordan kan jeg gøre en forespørgsel hurtigst, hvis jeg bare vil tjekke antallet af poster af en tabel?
Avatar billede Slettet bruger
26. november 2005 - 00:13 #3
Jeg vil mene det hurtigste er med en

SELECT COUNT(*) AS antal FROM tabel
Avatar billede kongfjong Nybegynder
26. november 2005 - 10:53 #4
Er det noget med at den sætter en variabek i php kaldet $antal så med antallet af poster?
Avatar billede Slettet bruger
26. november 2005 - 12:09 #5
Ikke direkte. Du skal hente antallet på samme måde, som du henter andre udtræk fra databasen, altså med $svar=mysql_fetch_assoc($res); eller lignende og derefter vil antallet ligge i $svar['antal']
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester