Problemen met een Query/subquery iets wat er op lijkt
Ik heb een set gegevens in mijn database die megagroot is. Wanneer ik een innerjoin doe hou ik nog steeds iets van 60 milioen records over. 2500*36447
Ik heb 2 tabellen Tabel a en tabel b
SELECT GEGEVEN1, GEGEVEN2, tabelb.NAAM1 AS NAAM1, tabelb.NAAM2 AS NAAM2,
FROM tabel a
LEFT JOIN tabel b ON
tabel a.GEGEVEN1 BETWEEN `tabelb`.`VAN` AND `tabelb`.`TOT`
WHERE (bepaalde voorwaarden waarop ik kan filteren)
Het probleem is ondanks alles wat ik filter deze query gewoon te veel tijd nodig heeft om dit uit te voeren. (met 2,5 uur was hij nog niet klaar.)
Wanneer ik bijvoorbeeld Gegeven1 zou invullen zoekt hij alleen maar 36447 records af.
Mijn probleem is dat Gegeven1 soms wel 200 tot 3000 records kan bevatten, dus reken maar uit.
Nu heb ik dat clever overwonnen door in PHP het volgende te doen
Eerst maak ik een query met alleen de gegevens:
SELECT gegeven1
FROM tabela
WHERE voorwaarde1 = 'iets' AND voorwaarde2 = 'nogiets' AND voorwaarde3 = 'iets'
Deze $results stop ik in een nieuwe query
while ($row = mysql_fetch_assoc($result))
{
$sql2 ="GEGEVEN1, GEGEVEN2, tabelb.NAAM1 AS NAAM1, tabelb.NAAM2 AS NAAM2,
FROM tabel a
LEFT JOIN tabel b ON
tabel a.GEGEVEN1 BETWEEN `tabelb`.`VAN` AND `tabelb`.`TOT`
WHERE voorwaarde1 = 'iets' AND voorwaarde2 = 'nogiets' AND voorwaarde3 = 'iets' AND gegeven1 ='".$row["gegeven1"]."'";
$result_naam = mysql_query(sql2);
Nog een fetchrow
data echoën
Vrij maken
en klaar
Op deze manier heb ik nu wel de join snel en goed kunnen regelen, maar je snapt het al ik kan niet sorteren of groeperen om dat hij elke waarde uit gegeven1 weer in de loop gooit en ik zo niet 1 query uitvoer maar het aantal wat in de $result wordt weergegeven.
Maar ik wil op groeperen op naam 1 om het overzichtelijker te houden.
Wie o wie kan mij op weg helpen.
PS ben een Noob, dus lach me niet uit.
Toevoeging op 08/03/2011 12:38:50:
Niemand???
Er zijn nog geen reacties op dit bericht.