Maison > développement back-end > tutoriel php > Comment puis-je optimiser les requêtes MySQL 'WHERE ... IN (...)' à l'aide de tableaux et d'instructions préparées ?

Comment puis-je optimiser les requêtes MySQL 'WHERE ... IN (...)' à l'aide de tableaux et d'instructions préparées ?

DDD
Libérer: 2024-12-16 06:53:11
original
721 Les gens l'ont consulté

How Can I Optimize MySQL

Utilisation de tableaux dans les instructions préparées MySQL pour les requêtes "WHERE ... IN (...)"

Dans les requêtes de base de données, en utilisant IN Les instructions peuvent optimiser les performances en réduisant le nombre d'appels à la base de données. Ceci est particulièrement utile lorsque vous travaillez avec de grands ensembles de données. Imaginez une requête comme celle-ci :

SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
Copier après la connexion

Si vous avez un tableau d'identifiants à récupérer, tel que $ids = array(1,5,18,25), vous pouvez envisager d'utiliser des instructions préparées. Les instructions préparées empêchent les attaques par injection SQL et améliorent les performances. Voici un exemple d'utilisation d'instructions préparées avec un seul identifiant :

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id`=?;');
foreach ($ids as $id){
    $stmt->bind_params('i', $id);
    $stmt->exec();
}
Copier après la connexion

Cependant, cette approche nécessiterait un tri manuel des résultats. Au lieu de cela, vous pouvez utiliser une alternative plus efficace en créant une chaîne avec des espaces réservés (?) et en utilisant la fonction implode() pour les séparer par des virgules.

$clause = implode(',', array_fill(0, count($ids), '?'));
Copier après la connexion

Ensuite, préparez l'instruction avec la clause et liez le tableau $ids à l'aide de call_user_func_array().

$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');
call_user_func_array(array($stmt, 'bind_param'), $ids);
$stmt->execute();
Copier après la connexion

Cette approche permet à MySQL de gérer le tri efficacement, vous faisant gagner du temps et effort.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal