使这部分PHP代码更快
我有一部分代码没有优化 可能左连接会使它更快。但是我在使用这种高级查询时遇到了一些问题 我想使用带有NULL值的左连接来查询第一个循环 这是代码的一部分:使这部分PHP代码更快,php,mysql,sql,join,Php,Mysql,Sql,Join,我有一部分代码没有优化 可能左连接会使它更快。但是我在使用这种高级查询时遇到了一些问题 我想使用带有NULL值的左连接来查询第一个循环 这是代码的一部分: $query = "SELECT * FROM SitiWeb_Categorie WHERE MaxArticoliConLinks > 0"; $result = mysql_query($query, $db); while($row = mysql_fetch_array($result)) { $Disponibile
$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)
{
}
}
由于您有相关的表SitiWeb_Categorie和Articolisti_Articoli,您可以使用以下查询:
SELECT
SitiWeb_Categorie.*,
Articolisti_Articoli.ID
FROM
SitiWeb_Categorie
LEFT JOIN
Articolisti_Articoli
ON
Articolisti_Incarichi.CategoriaID=SitiWeb_Categorie.ID
INNER JOIN
Articolisti_Incarichi
ON
Articolisti_Articoli.IncaricoID = Articolisti_Incarichi.ID
WHERE
SitiWeb_Categorie.MaxArticoliConLinks > 0
ORDER BY
Articolisti_Articoli.ID DESC