Autor | Zpráva | ||
---|---|---|---|
Sortex Profil * |
#1 · Zasláno: 29. 1. 2016, 13:35:17
Mám sloupec 'jmena' s UTF-8-czech_ci a potřebuju z něj data seřadit podle toho kolik mají znaků (ne bajtů!)
očekávaný výsledek takový : 1|Svatopluk Červeňásek 2|Jaroslav Červeňásek 3|Karel Červeňásek ... ... 9|Jan Malý Jména "nejkratší" - na konci řazení.... Jak se to dá vykonat? |
||
RastyAmateur Profil |
#2 · Zasláno: 29. 1. 2016, 13:37:28
Sortex:
Vyzkoušel bych nějakou radu ze stackoverflow. |
||
juriad Profil |
#3 · Zasláno: 29. 1. 2016, 13:39:24
Sortex:
Přidej další sloupec, do kterého si budeš ukládat délku jmen, a řaď podle tohoto sloupce. Se správným indexem je to svižné. Mohl bys řadit podle CHAR_LENGTH(jmena) , ale to by bylo pomalé - pro každý dotaz by bylo nutné doslova přečíst celou tabulku, vypočítat délky, a pak až řadit.
|
||
Amunak Profil |
Doplnil bych, že pokud půjde o malé tabulky nebo dotazy, které velkou tabulku vyfiltrují na malý počet výsleků, dopad na rychlost to bude mít minimální.
Jinak pokud se zvolí cesta formou počítání předem, šlo by k tomu využít databázové triggery, aby se počítání znaků a pak ukládání do databáze nemuselo provádět v kódu. Stejně tak k tomu lze mít i takový přístup, že se výsledky seřadí až po vybrání z databáze. Řešení které navrhuje juriad ovšem skutečně bude v obvyklých případech nejrychlejší, přestože sebou nese nutnost pamatovat na počítání znaků při insertech a updatech jména. |
||
Časová prodleva: 9 let
|
0