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 d'autres approches 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 considérez ce qui suit précautions :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3