Vinnaren i pepparkakshustävlingen!
  • 1
  • 2
2007-12-03, 20:29
  #1
Medlem
Flashback1986s avatar
På min hemsida kan jag ange hur många Päron, Äpplen och Mandariner jag ätit. Jag vill spara antalet av de vardera frukterna och datumet/klockslaget i en databas så jag senare kan kolla hur många tex Päron jag totalt käkat senaste dagen/veckan/månaden/året.

Jag kommer äta massvis med "frukter" och hemsidan kommer anropa databasen väldigt väldigt ofta, så databasen måste vara så optimerad som möjligt.

Vad tror ni om:

En tabell med tre kolumner för ID, Frukt-Typ och Timestamp? Ska jag ha ett index isf vart?

Om ni har ett bättre förslag så berätta gärna!
Citera
2007-12-03, 20:32
  #2
Medlem
Flashback1986s avatar
Glömde säga att det är mySQL jag kommer använda.
Citera
2007-12-03, 20:33
  #3
Medlem
TomBakers avatar
Det duger nog. Dock så är ID-kolumnen redundant om du bara ska kolla hur många fruktar du käkat över vissa tidsperioder.
Citera
2007-12-03, 20:39
  #4
Medlem
Flashback1986s avatar
Citat:
Ursprungligen postat av TomBaker
Det duger nog. Dock så är ID-kolumnen redundant om du bara ska kolla hur många fruktar du käkat över vissa tidsperioder.
Ja det är sant, ID är ju helt meningslöst i det här fallet

Vet du om jag kan göra nått fiffigt med index så databasen blir snabbare?
Citera
2007-12-03, 20:45
  #5
Medlem
TomBakers avatar
Nej, tyvärr. Men jag skulle gärna vilja veta vad det egentliga syftet med din databas är?
Citera
2007-12-03, 20:48
  #6
Medlem
Flashback1986s avatar
okej tack hjälpen, jag fick ju bort ID iaf.

Vadå, jag gillar frukt


EDIT:
Jag måste ju så klart ha en kolumn för antalet också

Frukt-typ | Antal | Timestamp ..så borde det se ut, någon som vet hur index ska användas på bästa sätt?
Citera
2007-12-03, 21:16
  #7
Medlem
munsårs avatar
Sätt ett index på time-stamp.

Varför?

För att din SQL-fråga antagligen kommer se ut något i stil med...

SELECT frukt-typ, antal FROM frukttabell WHERE timestamp BETWEEN ?? AND ??

Förmodligen kan ett kombinerat index med timestamp och frukttyp ge bättre prestanda om frågan ser ut som följande...

SELECT frukt-typ, antal FROM frukt-tabell WHERE frukt-typ = päron AND timestamp BETWEEN ?? AND ??
Citera
2007-12-05, 18:41
  #8
Medlem
Flashback1986s avatar
Citat:
Ursprungligen postat av munsår
Sätt ett index på time-stamp.

Varför?

För att din SQL-fråga antagligen kommer se ut något i stil med...

SELECT frukt-typ, antal FROM frukttabell WHERE timestamp BETWEEN ?? AND ??

Förmodligen kan ett kombinerat index med timestamp och frukttyp ge bättre prestanda om frågan ser ut som följande...

SELECT frukt-typ, antal FROM frukt-tabell WHERE frukt-typ = päron AND timestamp BETWEEN ?? AND ??
Det där ser lovande ut, har du eller någon annan lust att förklara hur man gör ett kombinerat index? Jag använder phpMyAdmin, ska jag bara klicka i att båda är index?

Sen undrar jag också vilken jag ska välja som primary.
Citera
2007-12-05, 22:04
  #9
Medlem
Flashback1986s avatar
Hur ska jag fråga MySQL för att få ut all frukt jag ätit den senaste månaden?
Citera
2007-12-06, 00:56
  #10
Avstängd
craxs avatar
Citat:
Ursprungligen postat av Flashback1986
Hur ska jag fråga MySQL för att få ut all frukt jag ätit den senaste månaden?

om du har en variabel för år t.ex. $year och en för månad t.ex. $month så kan du göra såhär

.... WHERE timestamp LIKE '$year-$month-%' ....

eller hur du nu delar upp i din timestamp... då får du iaf all frukt från vald månad

glömde att säga att det är förutsatt att du anropar från en PHP-sida men det antar jag eftersom du kör phpmyadmin
Citera
2007-12-06, 11:25
  #11
Medlem
Citat:
Ursprungligen postat av Flashback1986
Hur ska jag fråga MySQL för att få ut all frukt jag ätit den senaste månaden?
SELECT * FROM frukt WHERE tid >= DATE_SUB(NOW(), INTERVAL 1 month);
Citera
2007-12-06, 13:35
  #12
Medlem
Sane?s avatar
Får starka skolarbetesvibbar
Citera
  • 1
  • 2

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback