À partir de la documentation MySQL sur https://dev.mysql .com/doc/refman/5.6/en/order-by-optimization.html
Dans certains cas, MySQL ne peut pas utiliser les index pour résoudre le ORDER BY , bien qu'il utilise toujours des index pour trouver les lignes qui correspondent à WHERE clause. Ces cas incluent les suivants :
. . .
La clé utilisée pour récupérer les lignes n'est pas la même que celle utilisée dans le ORDER BY :
`SELECT * FROM t1 WHERE key2=constant ORDER BY key1;`
Cela n'aidera probablement pas, mais que se passe-t-il si vous ajoutez AND ID > 0 au WHERE clause? Cela amènerait-il MySQL à utiliser la clé primaire pour le tri ? Ça vaut le coup d'essayer, je suppose.
(Il semble étrange que l'ordre avec ak soit efficace, puisque ak n'a même pas d'index, mais cela peut être dû à moins de valeurs pour ak ?)