J'ai fait la requête suivante basée sur de nombreux tutoriels de blogs et des réponses sur stackoverflow.MySQL: simplifier une requête complexe
$query = mysql_query("SELECT COUNT(user_id) FROM $table f1".
"WHERE (user_id = '$userA')".
"AND EXISTS (SELECT 1 FROM $table f2 WHERE user_id = '$userB'"
"AND f1.$field = f2.$field)")
or die(mysql_error());
while($row = mysql_fetch_array($query)){
$com = $row['COUNT(user_id)'];
}
Les paramètres tels que userA, userB sont pris par un tableau à une dimension de 4000 valeurs. Mais en fait, j'utilise la boucle à l'intérieur de la boucle pour faire une table de taille 4000x4000.
En raison des nombreuses données dans la base de données, le nombre total d'interrogations iraniennes sera de 17.000.000. J'ai donc essayé d'exécuter le script complet mais j'ai vu que la requête ci-dessus prenait plusieurs secondes (1 ou 2).
Avez-vous une suggestion pour augmenter la vitesse d'exécution en corrigeant la requête ci-dessus?
OMG! C'est vraiment rapide maintenant! (30 par seconde au lieu de 1 par seconde!) – zuperakos
@zuperakos Les sous-sélections sont mal optimisées dans mysql. Évitez-les quand c'est possible. – jordanm
Merci beaucoup à tous les deux! – zuperakos