Het volgende is het geval. Ik heb een 5 tal tabellen in een mysql database staan. Deze tabellen staan in een soort van boomstructeur met elkaar gekoppeld. In de totale database komen zo met een meer op alles koppeling op ruim 1 miljoen rijen. In de grootste tabel staan ruim 30.000 records.
Ik wil uit het gehaal nu random (RAND()) een selectie doen. Tot nu deed ik dit heel simpel via de RAND funcitie in mysql, maar dit begint resources te vergen, daarbij er toch elke 2-3 seconden een dergelijke selectie naar de database gestuurd wordt. (tijden van 2-3 seconden execute tijd is geen uitzondering).
Hoe kan je dmv een betere selectie deze data toch random uit de database halen?
Ik heb geprobeerd:
1. Koppelingen maken en dan uiteindelijk RAND()
2. alle tabellen left join doen aan elkaar en dan RAND()
3. via een JOIN waarin een subquery gedaan word
SELECT ROUND( RAND( ) * (
SELECT MAX( id )
FROM linx ) ) AS id
) AS r2
en dan onderaan in WHERE een id >= r2.id
hier krijg ik echter maar steeds 1 record terug en moet dus voor meerdere (soms honderden honderd maal een selectie op die manier doen
4 Maximale bepalen en per php een aantal getallen krijgen (bijvoorbeeld 100 of 200) en die allemaal opnemen in WHERE. Dus WHERE id=101 OR id =3211 OR id = 121 etc.
Wat is de beste optie,zijn er misschien nog andere?
Ik wil uit het gehaal nu random (RAND()) een selectie doen. Tot nu deed ik dit heel simpel via de RAND funcitie in mysql, maar dit begint resources te vergen, daarbij er toch elke 2-3 seconden een dergelijke selectie naar de database gestuurd wordt. (tijden van 2-3 seconden execute tijd is geen uitzondering).
Hoe kan je dmv een betere selectie deze data toch random uit de database halen?
Ik heb geprobeerd:
1. Koppelingen maken en dan uiteindelijk RAND()
2. alle tabellen left join doen aan elkaar en dan RAND()
3. via een JOIN waarin een subquery gedaan word
SELECT ROUND( RAND( ) * (
SELECT MAX( id )
FROM linx ) ) AS id
) AS r2
en dan onderaan in WHERE een id >= r2.id
hier krijg ik echter maar steeds 1 record terug en moet dus voor meerdere (soms honderden honderd maal een selectie op die manier doen
4 Maximale bepalen en per php een aantal getallen krijgen (bijvoorbeeld 100 of 200) en die allemaal opnemen in WHERE. Dus WHERE id=101 OR id =3211 OR id = 121 etc.
Wat is de beste optie,zijn er misschien nog andere?