Beste,

Hoe kan je ervoor zorgen dat een script echt doelgericht naar een db gaat?
Zodat hij niet heel de db moet doorlopen,
Maar enkel de items leest/zoekt die hij nodig heeft

Om nu een voorbeeld te geven
in een tabel met 10000 entry's
bijvoorbeeld alleen de enty's leest die met als username 'Matthias' heeft..
Want als ik gwn order by 'username' Where username ='matthias'
Dan doorloopt hij heeeel de database voordat hij zijn antwoord terug geeft...


Mvg
Matthias rochtus
Dat ligt aan je database structuur. Als je een index op het veld zet kan hij eerst kijken naar de where clause (en dan alleen in de index welke vaak zeer klein is en zeer snel doorzocht kan worden). Er zijn query optimizers die als enige taak hebben queries zo snel mogelijk uit te voeren, dus daar hoef je je niet druk om te maken. Als jij een goed ontwerp hebt voor je database en je indexen goed staan enzo dan is jouw query op een tabel met 10000 entries binnen een tiende van een seconde uitgevoerd (en vaak nog vele malen sneller).
Beste,

Bedoel je, als ik een index zet op de rij waarop meetst gezocht,
Hij dan minder load op de server veroorzaakt?

Indien dit omgeveer is wat je bedoelt:
Hoe werkt een index?
Ja inderdaad. Bij een index wordt er op dat veld een "snelzoekoptie" gemaakt. Dat gebeurd meestal door middel van hashing. Tevens opletten op de types. Niet alles memo's maken. Memo's indexeren is trouwens ook niet echt een slimme optie.

En als laatste je database normalizeren. Niet alles in 1 tabel gooien, maar meerdere kleine tabellen. De kleine tabbelen zijn sneller te doorzoeken (dus je velden verdelen) zeker op niet geindexeerde velden.
Beste,

Is het mogelijk om een script te schrijven dat in alle tabellen van een db zoekt, en daar de informatie uithaalt, en deze dan echo'd op date..
Dus niet eerst alles uit tabel 1 en dan alles uit tabel2...
Maar tabel1 en tabel 2 mengt naar gelang de date..
Dat is zeker mogelijk, ik weet alleen niet welke optie je bedoeld.
Het is namelijk niet de bedoeling om je rijen te splitsen over tabellen met dezelfde structuur, maar tabellen met verschillende structuur en dan even veel rijen.

Bijvoorbeeld in plaats van de tabel Klantgegevens:
(Klantid, klantnaam, klantadres, klantpostcode, klantwoonplaats, klantcreditkaart, klantbankrekening, klantvoorkeurkleur, klantvoorkeurtaal) etc.

Deze op te splitsen in:
Klant (klantid, klantnaam)
Klantadres (klantadresid, klantid, klantadres, klantpostcode, klantwoonplaats)
klantbetalinggegevens (klantbetalingid, klantid, klantcreditkaart, klantbankrekening)
klantvoorkeuren (klantvoorkeurid, klantid, klantvoorkeurkleur, klantvoorkeurtaal)


Met behulp van een UNION en een order by kan je anders doen wat je wilt als ik je goed begrijp. Als tabel1 en tabel2 dezelfde velden hebben (aantallen)

SELECT * FROM
(SELECT * FROM `tabel1`
UNION
SELECT * FROM `tabel2` )
ORDER BY `date`


(alternatief: Met behulp van een JOIN, maar dat is meer data samenvoegen
http://dev.mysql.com/doc/refman/5.0/en/join.html)
Best leuk die union...
Ik ga de komende dagen eens goeeeeed nadenken over de tabellen stuctuur...

thnx for help!!!

Reageren