Gå til innhold

Script blir tregt pga teller


Anbefalte innlegg

Skrevet

Har laget en teller på siden min. Men nå som tabellen begynner å bli litt stor ser den ut til å gjøre scriptet VELDIG mye tregere. Skjønner selvsagt at den blir tregere men ikke så treg som den er nå.. Kommandoen som tydeligvis gjør at scriptet bruker lang tid er dette:

 

$sql = mysql_query("SELECT DISTINCT(session) FROM `stats`");
$rows = mysql_num_rows($sql);

 

Tabellen den henter fra er på ca 10.000 rader nå. Tellern henter 105 rader. Syns ikke det er mye nok til å senke scriptet så mye som den gjør nå..

Videoannonse
Annonse
Skrevet

hvis du bare skal telle, kan du bruke queryet:

 

"select count(distinct session) as antall from stats"

 

videre kan det være lurt å indeksere kolonna session. Du vil merke stor forskjell hvis det er det skoen klemmer.

Skrevet (endret)

Hvis du likevel henter $db['antall'] så holder det lenge med:

$db = mysql_fetch_assoc($sql);

 

Edit:

du burde absolutt indeksere slik Torbjør foreslår. Det er kanskje ikke nødvendig å indeksere hele feltet, de første 5 tegnene eller lignende holder kanskje. Prøv deg frem.

Endret av ????????
Skrevet

:)

jeg mener at det er elegant å kunne unngå å bruke en array som du bare trenger for å hente ut ett element av, ja

 

list() gir hvertfall en svak "touch" av andre programmeringspråk som ligger over horisonten ;)

Skrevet

Takk for hjelp! :)

Satt på indeksering nå på både session og ip. Men hva er egentklig indeksering bra til? Ble vel kansje litt raskere (er ikke sikker)

Skrevet (endret)

Det krever forresten en del fortsatt da...

Når jeg ikke henter inn dataen er render time 0.069378

Når jeg henter dataen er den 0.201246

Syns det er endel..

Endret av ProXymus
Skrevet

Du kan sette opp ett script som sletter alle sessions som er utgått, med crontab eller noe. Hvis ikke du allerede har fikset noe slikt, da.

Skrevet

Gjør du det så er det viktig at du holder tungen litt rett i munnen ved valg av tabelltype.

 

For å se hvor mye tid du kan tjene må du teste spørringen i mysql for å få en ekstakt tid på tiden til spørringen. Kanskje har du mer å tjene på å opprette en HEAP tabell - spørringene vil ta kortere tid, men det kan være litt kjedelig å ha en minnebasert tabell dersom mysql kræsjer. Glem ikke å lese om begrensingene til HEAP tabeller.

 

En mye mer vanlig løsning er å bruke MERGE. Da kan du pakke sammen tabellen, og da blir den raskere å lese fra.

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å
×
×
  • Opprett ny...