Z dokumentace MySQL na adrese http://dev.mysql .com/doc/refman/5.6/en/order-by-optimization.html
V některých případech nemůže MySQL použít indexy k vyřešení ORDER BY
, i když stále používá indexy k nalezení řádků, které odpovídají WHERE
doložka. Tyto případy zahrnují následující:
. . .
Klíč použitý k načtení řádků není stejný jako klíč použitý v ORDER BY
:
`SELECT * FROM t1 WHERE key2=constant ORDER BY key1;`
To pravděpodobně nepomůže, ale co se stane, když přidáte AND ID > 0
do WHERE
doložka? Způsobilo by to, že MySQL použije primární klíč pro třídění? Myslím, že to stojí za vyzkoušení.
(Zdá se zvláštní, že řazení pomocí ak je efektivní, protože ak nemá ani index, ale to může být způsobeno menším počtem hodnot pro ak?)