[mySQL] optimalisatie, kolom wissen of kopieren

Pagina: 1
Acties:
  • 189 views sinds 30-01-2008
  • Reageer

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
Ik heb een mySQL tabel met daarin onder andere de kolommen `gisteren` en `vandaag`. Aan het eind van elke dag wil ik de inhoud van vandaag in gisteren zetten, en vandaag leeg maken. Aangezien de bedoeling is dat er veel rijen in de tabel komen wil ik graag weten hoe ik dit het beste kan aanpakken.

Eerst gisteren droppen, de vandaag hernoemen tot gisteren, en een nieuwe vandaag maken met alleen maar 0 er in(standaard waarde)

of

De tabel updaten met gisteren=vandaag, vandaag=0

Verwijderd

het snelste zal waarschijnlijk zijn als je:

1. de tabel gisteren verwijderd..
2. de tabel vandaag hernoemt naar gisteren..
3. een nieuwe tabel vandaag aanmaakt..

(als ik begrijp wat je wilt :9)

Om er zeker van te zijn welke oplossing het snelste is, zou je natuurlijk een parsetime counter kunnen bouwen:

1. count1 = huidige tijd (ms)
2. uitvoering van database gebeuren
3. count2 = huidige tijd (ms)
4. count2 - count1 = totale rekentijd :)

succes ermee :*)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

* gorgi_19 is trouwens wel benieud waarom je dit in twee tabellen wilt doen en niet gewoon een datumkolom wil toevoegen...

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • nikao
  • Registratie: November 1999
  • Laatst online: 10-02-2022
topicstarter had het over 2 kolommen in 1 tabel ..

oplossing zal niet echt lekker worden denk ik.. misschien kun je iets meer vertellen wat je wilt doen en waar het voor moet dienen?.. wellicht dat er ook een andere oplossing mogelij kis :)

  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
UPDATE tabel SET gisteren = vandaag;
UPDATE tabel SET vandaag = '';
:?
Misschien wel in 1 keer: UPDATE tabel SET gisteren = vandaag, vandaag = '';
:?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

nikao schreef op 23 februari 2003 @ 10:11:
topicstarter had het over 2 kolommen in 1 tabel ..

oplossing zal niet echt lekker worden denk ik.. misschien kun je iets meer vertellen wat je wilt doen en waar het voor moet dienen?.. wellicht dat er ook een andere oplossing mogelij kis :)
Maakt op zich niet uit. Dan de vraag: waarom de kolommen vandaag en gisteren? Lijkt me ook volstrekt overbodig.

* gorgi_19 gokt op een fout in het datamodel

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Of misschien juist geen fout, maar een manier om overbodige data niet te lang te bewaren ;)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

elviver schreef op 23 February 2003 @ 13:37:
Of misschien juist geen fout, maar een manier om overbodige data niet te lang te bewaren ;)
Dan kan je het nog eenvoudiger oplossen door een datumkolom te gebruiken.
Vervolgens delete je alles wat ouder is dan 1 dag.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

_js_ schreef op 23 February 2003 @ 03:21:
Ik heb een mySQL tabel met daarin onder andere de kolommen `gisteren` en `vandaag`. Aan het eind van elke dag wil ik de inhoud van vandaag in gisteren zetten, en vandaag leeg maken. Aangezien de bedoeling is dat er veel rijen in de tabel komen wil ik graag weten hoe ik dit het beste kan aanpakken.
Dit lijkt me niet echt efficient.. Als je inderdaad veel rijen krijgt op een gegeven moment en je moet elke dag je hele table updaten, dan krijg je best wel wat onnodige overhead.
gorgi_19 schreef op 23 February 2003 @ 13:34:
* gorgi_19 gokt op een fout in het datamodel
Een gok met 99% zekerheid ;) .

Waarom sloop je die twee kolommen er niet uit en zet je er 1 datumkolom in? Dan kan je op het moment dat er een rij wordt toegevoegd of ge-update er een datum in zetten. Aan de hand daarvan zou je vrij simpel moeten kunnen nagaan wat 'gisteren' en 'vandaag' en '2 weken terug' was.

Sundown Circus


  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 13-01 07:19
De tabel bevat informatie over spelers in een spel, in het spel kun je punten winnen. In gisteren staat hoeveel punten de speler gisteren heeft gewonnen, in vandaag hoeveel de speler vandaag heeft gewonnen.

Ik heb ook wel een tabel met daarin de lijst van spellen, en daar staat ook bij hoeveel punten iemand heeft gewonnen, en de tijd zodat ik als iemand wil weten hoeveel punten hij/zij heeft gewonnen ik dat ook daarin kan opzoeken, maar ik heb in mijn tabel met spelers ook een kolom met daarin het maximum aantal punten die de speler ooit op een dag heeft gehaald, als ik die elke dag update kan dat niet echt door ze uit de tabel met spellen te vissen.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:16

gorgi_19

Kruimeltjes zijn weer op :9

_js_ schreef op 23 February 2003 @ 16:40:
De tabel bevat informatie over spelers in een spel, in het spel kun je punten winnen. In gisteren staat hoeveel punten de speler gisteren heeft gewonnen, in vandaag hoeveel de speler vandaag heeft gewonnen.

Ik heb ook wel een tabel met daarin de lijst van spellen, en daar staat ook bij hoeveel punten iemand heeft gewonnen, en de tijd zodat ik als iemand wil weten hoeveel punten hij/zij heeft gewonnen ik dat ook daarin kan opzoeken, maar ik heb in mijn tabel met spelers ook een kolom met daarin het maximum aantal punten die de speler ooit op een dag heeft gehaald, als ik die elke dag update kan dat niet echt door ze uit de tabel met spellen te vissen.
Tabel spelers
SpelerID
Naam
...

Tabel spellen
SpelID
Spelnaam

Tabel punten
SpelerID
SpelID
Punten
Datum

:?

Digitaal onderwijsmateriaal, leermateriaal voor hbo

Pagina: 1