Maison >développement back-end >tutoriel php >Comment les instructions préparées de MySQL peuvent-elles optimiser les requêtes de clause WHERE basées sur des tableaux ?
Exploiter MySQL pour les requêtes de clause WHERE basées sur des tableaux
Lorsque vous traitez plusieurs conditions dans une clause WHERE, envisagez d'optimiser les performances en utilisant un tableau comme argument dans une instruction préparée par mysqli. Cette approche élimine le besoin de tri manuel des résultats, en exploitant les capacités de MySQL.
Imaginez une requête comme celle-ci :
SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Avec un tableau d'identifiants à récupérer ($ids = array(1 ,5,18,25)), vous pouvez récupérer efficacement les données souhaitées en utilisant les éléments suivants étapes :
Préparez une seule instruction :
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (?);');
Implode le tableau en une chaîne de points d'interrogation :
$clause = implode(',', array_fill(0, count($ids), '?'));
Re-préparer la déclaration avec la clause inclus :
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');
Lier les identifiants à l'aide de call_user_func_array :
call_user_func_array(array($stmt, 'bind_param'), $ids);
Utiliser ceci technique, le tri est effectué par MySQL, éliminant ainsi le besoin de manipulation manuelle. De plus, cette approche est efficace et réduit le nombre de requêtes de base de données requises.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!