Odpověď je v otázce:
Zde je klíčové slovo "výraz" . Můžete použít výrazy v ORDER BY doložka.
ORDER BY -order_line_groups.sequence DESC
je aritmetický výraz a "pomlčka" není pomlčka, ale mínus; unární mínus matematický operátor.
Jak to funguje?
Pokud jde o výsledek, funguje podle očekávání:
-
Pokud je typ sloupce
order_line_groups.sequenceje číselný typ nebo typ data a času (jsou také interně uloženy jako čísla), potom mínus obrátí pořadí vrácených řádků. Klauzule je ekvivalentní sORDER BY order_line_groups.sequence ASC -
Pokud je typ sloupce typ řetězce poté se MySQL pokusí převést hodnoty sloupce na čísla (protože odčítání je aritmetická operace a není definována pro řetězce). Když MySQL převádí řetězce na čísla, zastaví se na prvním znaku, který není číslicí. V závislosti na datech, která ukládáte do sloupce
order_line_groups.sequence, více či méně jeho řetězcových hodnot se převede na číslo0.
Pokud jde o rychlost, jak je vysvětleno na stránce dokumentace uvedené v otázce MySQL nemůže použít indexy k vyřešení ORDER BY . Tím se dotaz zpomalí.
Závěr
Pomocí ORDER BY -order_line_groups.sequence zpomaluje dotaz. Navíc to neposkytuje dobrý způsob, jak třídit sadu výsledků, když je typ sloupce sequence je typ řetězce.