Conheço um truque para fazer o pedido por consultas mais rápido quando queremos pedir por asc e desc.
Para inteiros, armazene um valor negado.
Portanto, se eu armazenar -7,-11,-8,-5,-1,-2
a ordem por asc, -11, -8, -7, 5, -2, -1
a linha real será classificada por essa coluna (se, por exemplo, eu mostrar a versão não negada).
Pergunta: Como eu uso este truque com strings?
Como uma string é "negada" ou invertida para que o truque funcione também para colunas de string?
Atualizar
o MySQL não pode usar um índice para uma consulta do tipo:
ORDER BY col1 ASC col2 DESC
Se a coluna que eu quero descer for um número inteiro posso armazenar o valor negado e fazer a consulta como:
ORDER BY col1 ASC col2 ASC
Nesse caso o índice pode ser usado e eu vou de fato obter o valor em ordem decrescente devido à negação -11, -8, -7, 5, -2, -1
é crescente, mas se você remover a negação é decrescente.
Meu problema é que não estou claro como aplicar essa abordagem a uma coluna de string. Posso de alguma forma obter o valor aritmético da string?