我有一部分代码没有那么优化。
可能一个 LEFT JOIN 会使其更快。但是我对这种高级查询有些麻烦。
我想使用 LEFT JOIN 与 NULL 值(http://explainextended.com/2009/09/18/not-in-vs-not-exists-vs-left-join-is-null-mysql/)查询到第一个 cicle。
这是代码的一部分:
$query = "SELECT * FROM SitiWeb_Categorie WHERE MaxArticoliConLinks > 0";
$result = mysql_query($query, $db);
while($row = mysql_fetch_array($result))
{
$Disponibile = 0;
//Trovo tutti gli articoli redatti ed assegnati a questa categoria
//Verifico inoltre che non è presente nella tabella delle pubblicazioni
$query2 = "SELECT Articolisti_Articoli.ID AS ArticoloID FROM Articolisti_Articoli, Articolisti_Incarichi WHERE Articolisti_Incarichi.CategoriaID = '$row[ID]' AND Articolisti_Articoli.IncaricoID = Articolisti_Incarichi.ID ORDER BY Articolisti_Articoli.ID DESC";
$result2 = mysql_query($query2, $db);
while($row2 = mysql_fetch_array($result2))
{
$query3 = "SELECT COUNT(ID) AS Tot FROM SitiWeb_Articoli WHERE ArticoloID = $row2[ArticoloID]";
$result3 = mysql_query($query3, $db);
$row3 = mysql_fetch_array($result3);
if($row3[Tot]==0)
{
$Disponibile++;
}
if($Disponibile==10)
{
break;
}
}
if($Disponibile<10)
{
}
}