Z dokumentacji MySQL pod adresem http://dev.mysql .com/doc/refman/5.6/en/order-by-optimization.html
W niektórych przypadkach MySQL nie może użyć indeksów do rozwiązania ORDER BY
, chociaż nadal używa indeksów, aby znaleźć wiersze pasujące do WHERE
klauzula. Przypadki te obejmują:
. . .
Klucz używany do pobierania wierszy nie jest taki sam, jak ten użyty w ORDER BY
:
`SELECT * FROM t1 WHERE key2=constant ORDER BY key1;`
To prawdopodobnie nie pomoże, ale co się stanie, jeśli dodasz AND ID > 0
? do WHERE
klauzula? Czy spowoduje to, że MySQL użyje klucza podstawowego do sortowania? Przypuszczam, że warto spróbować.
(Wydaje się dziwne, że porządkowanie za pomocą ak jest wydajne, ponieważ ak nie ma nawet indeksu, ale może to wynikać z mniejszej liczby wartości dla ak?)