La fonction FIND_IN_SET de MySQL est connue pour ne pas utiliser d'index, ce qui entraîne des requêtes inefficaces. Cependant, il existe des approches alternatives pour obtenir le comportement d'indexation souhaité lorsqu'il s'agit de listes séparées par des virgules.
La technique décrite dans la réponse fournie suggère d'utiliser une instruction préparée avec un paramètre accepter une chaîne sous la forme d'une liste séparée par des virgules. En utilisant le type de plage avec une clé non NULL dans l'instruction préparée, cela garantit que les index seront utilisés lors de l'exécution de la clause IN.
Par exemple, la requête suivante effectue une recherche de plage avec un index sur le Colonne « id » :
explain select * from ratings where id in (2331425, 430364, 4557546, 2696638, 4510549, ...)
Bien que cette approche permette des requêtes indexées efficaces, il est crucial de prendre en compte les précautions suivantes :
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!