Hallo,

Ik heb een query die zeer langzaam is hopelijk kunnen jullie me helpen met het vinden van een oorzaak waarom die zo traag is.
<?
$qe1 = mysql_query("SELECT x FROM tableAA WHERE y = 1 ORDER BY z ");

			while($q2_1 = mysql_fetch_assoc($q2)){
					$X = $q2_1['x'];
					
					
					echo "<div id='floater'><h2>$X<br/></h2>";
				
					$qe3 = mysql_query("SELECT
	A
	FROM  tableBB
WHERE  (B IN (SELECT C
		   FROM tableCC
		   WHERE (D IN (SELECT E
					FROM tableDD
					WHERE (F = selectedG)
					)
			 )
		   
		   )
	) AND (M =$X)
ORDER BY
	Z; 
") or die (mysql_error()); 

		while($kkkkk = mysql_fetch_assoc($qe3)){
		echo $kkkkk['text'];
		
		}} ?>
Om hoeveel rijen gaat het?
Want SELECT IN (SELECT IN (SELECT IN (SELECT * WHERE ...))) kunnen heel veel mogelijkheden zijn.
Is een LEFT/RIGHT/INNER JOIN niet beter op zijn plaats?
Het gaat om miljoenen rijen. Kun je een voorbeeld geven

SELECT
	bb.A
FROM
	tabelBB bb
JOIN
	tabelCC cc
	ON bb.B = cc.C
JOIN
	tabelDD dd
	ON cc.D = dd.E
WHERE
	bb.M = $X AND dd.F = dd.selectedG

Maar begin eerst eens gewoon met fatsoenlijke namen toe te kennen aan de tabellen en kolommen.
In 99,99999% van de gevallen kan je queries die je in een while lus uitvoert met de resultaten van een andere querie, in één query onderbrengen.

En bekijk met explain eens of je indexes gebruikt worden (als je die niet hebt zal je die op de juiste plekken moeten aanmaken)

Reageren