je suis une base de données d'interroger comme ceci:MySQL n'utilise pas les clés de la requête externe d'une sous-sélection avec « IN »
SELECT * from Log WHERE cookieId IN (select cookieId from Log WHERE someId="blafasel");
Je touches someId et cookieId mais encore la requête est très lent. Si je cours les deux requêtes (l'extérieur et l'intérieur) les séparent tous les deux ou très rapidement.
select cookieId from Log WHERE someId="blafasel"
me obtient les résultats presque instantanés. Et fait donc une requête
SELECT * FROM Log WHERE cookieId IN ("something","somethingelse","athirdoption")
avec EXPLAIN me dit que les clés sont utilisées dans les deux requêtes simples mais pour les touches de requête subselect ne sont utilisées que pour la sélection intérieure. Ma question est pourquoi? Et comment dire à MySQL d'être un peu plus intelligent.
Eh bien, je pourrais laisser mon application exécuter les deux requêtes séparées, mais ce ne serait pas pratique.
Merci pour votre aide.
J'étais juste un peu plus lent, donc je supprimé ma réponse indiquant la même chose et vous avez voté au lieu: p. – wimvds
Nice, je vais utiliser cela pour améliorer certaines de mes requêtes SQL. –