2009-09-21 6 views
-4
$query = "select * from a ..."; 
if($result = mysql_query($query,$con)) 
{while($row = mysql_fetch_array($result);) 
     $arr[0][] = $row; 
} 
$query = "select * from b ..."; 
if($result = mysql_query($query,$con)) 
{ 
    while($row = mysql_fetch_array($result);) 
     $arr[1][] = $row; 
} 
$query = "select * from c ..."; 
if($result = mysql_query($query,$con)) 
{ 
    while($row = mysql_fetch_array($result);) 
     $arr[2][] = $row; 
} 

Les 3 requêtes récupère plusieurs lignes avec une structure différente, 3 requêtes ont besoin de 3 aller-retour, 10 requêtes auront besoin de 10 aller-retour.Que ferez-vous pour optimiser les performances de MySQL dans ce cas?

Comment allez-vous optimiser ce cas?

+2

Quelle est la structure de chaque table. Ont-ils quelque chose en commun? –

+0

Non, totalement rien en commun. – omg

+0

Il est temps de se pencher, le temps de nettoyer. -1 –

Répondre

1

Sélectionnez les colonnes que vous avez réellement besoin au lieu de select *

Autre que cela, pas grand chose à dire sans savoir quelles sont les données dont vous avez besoin et comment ils se rapportent.

0

Vous pouvez essayer une UNION:

$query = "SELECT 'a' AS tablename, a.* FROM a 
UNION 
SELECT 'b' AS tablename, b.* FROM b 
UNION 
SELECT 'c' AS tablename, c.* FROM c"; 
if($result = mysql_query($query,$con)) 
{while($row = mysql_fetch_array($result);) 

switch ($row['tablename']) { 
    case "a": 
     $arr[0][] = $row; 
     break; 
    case "b": 
$arr[1][] = $row; 
     break; 
    case "c": 
     $arr[2][] = $row; 
     break; 
} 
} 

pardon mon php, ce n'est pas mon domaine d'expertise :)

+0

Semble que cela ne fonctionnera que lorsque les numéros de colonne sont les mêmes.Quoi si non? – omg

+0

Alors vous êtes foutu. –

+0

Vous voulez dire pas de solution? – omg

Questions connexes