Pour compléter la réponse de Paco que je remercie, je rapporte une remarque du SAV
Soit une table de 10.000 lignes avec un index numérique num de valeurs quelqconques
EXPLAIN SELECT * FROM `table` WHERE num>=18236 limit 0,1
Réponse de Mysql : key=num, rows=1 , Extra = Using index condition
puis les mêmes avec une modification apparemment anodine de la condition
EXPLAIN SELECT * FROM `table` WHERE num+1>=18237 limit 0,1
Réponse de Mysql : key=NULL, rows=10000 , Extra = Using where
Pour utiliser un index , il ne faut pas le recomposer dans un calcul.
Si num est un index, num+1 et même num*1 ne sont pas des index ! Pas plus que lorsque plusieurs index sont combinés dans une opération. Les expressions ne sont pas simplifiées, c'est au programmeur de le faire.