ďťż
 
Zapytanie o sortowanie ďťż
 
Zapytanie o sortowanie
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Zapytanie o sortowanie



kornel - 16-01-2006 23:25
Zapytanie o sortowanie
  Witam,
mowa o postgresql. w tabeli mam kolumne (tekstowa) w ktorej sa wpisy
takie jak:
1/04
62/01
3/05
200/04

Ogolnie:
numer_glowny/rok

Teraz chcialbym to posortowac najpierw wg roku, pozniej wg numeru glownego,
czyli:
62/01
1/04
200/04
3/05

z poprzedniego przykladu. Wymyslilem cos takiego:

SELECT number FROM a
ORDER BY substring( number from '%/#"__#"' for '#' ) ,
int4(substring( number from '#"%#"/__' for '#' ))

Generalnie to sie sprawdza :) Co sadzicie, jak wydajne to bedzie?

--
Pozdrawiam,
Kornel





=?UTF-8?B?UmFkb3PFgmF3IEtvcnplbmlld3NraQ==?= - 16-01-2006 23:25

  kornel wrote:
> Witam,
> mowa o postgresql. w tabeli mam kolumne (tekstowa) w ktorej sa wpisy
> takie jak:
> 1/04
> 62/01
> 3/05
> 200/04
>
> Ogolnie:
> numer_glowny/rok
>
> Teraz chcialbym to posortowac najpierw wg roku, pozniej wg numeru glownego,
> czyli:
> 62/01
> 1/04
> 200/04
> 3/05
>
> z poprzedniego przykladu. Wymyslilem cos takiego:
>
> SELECT number FROM a
> ORDER BY substring( number from '%/#"__#"' for '#' ) ,
> int4(substring( number from '#"%#"/__' for '#' ))
>
> Generalnie to sie sprawdza :) Co sadzicie, jak wydajne to bedzie?
>
Nie jestem w tym temacie wyrocznią ale wydaje mi się że trudno będzie
stworzyć dobry indeks na substringach, co oznacza że wyszukiwanie takich
rekordów będzie zawsze wymagało fullscana po tabeli, co przy dużej ich
liczbie będzie bardzo długie.

pozdr

Radek




=?ISO-8859-2?Q?Pawe=B3_Matejski?= - 16-01-2006 23:25

  Radosław Korzeniewski wrote:
> kornel wrote:
>
>> Witam,
>> mowa o postgresql. w tabeli mam kolumne (tekstowa) w ktorej sa wpisy
>> takie jak:
>> 1/04
>> 62/01
>> 3/05
>> 200/04
>>
>> Ogolnie:
>> numer_glowny/rok
>>
>> Teraz chcialbym to posortowac najpierw wg roku, pozniej wg numeru
>> glownego, czyli:
>> 62/01
>> 1/04
>> 200/04
>> 3/05
>>
>> z poprzedniego przykladu. Wymyslilem cos takiego:
>>
>> SELECT number FROM a
>> ORDER BY substring( number from '%/#"__#"' for '#' ) ,
>> int4(substring( number from '#"%#"/__' for '#' ))
>>
>> Generalnie to sie sprawdza :) Co sadzicie, jak wydajne to bedzie?
>>
>
> Nie jestem w tym temacie wyrocznią ale wydaje mi się że trudno będzie
> stworzyć dobry indeks na substringach, co oznacza że wyszukiwanie takich
> rekordów będzie zawsze wymagało fullscana po tabeli, co przy dużej ich
> liczbie będzie bardzo długie.

Zawsze można użyć indexu funkcyjnego.

--
P.M.




Robert Grabowski - 17-01-2006 10:51

  Radosław Korzeniewski wrote:
[...]

>> SELECT number FROM a
>> ORDER BY substring( number from '%/#"__#"' for '#' ) ,
>> int4(substring( number from '#"%#"/__' for '#' ))
>>
>> Generalnie to sie sprawdza :) Co sadzicie, jak wydajne to bedzie?
>>
> Nie jestem w tym temacie wyrocznią ale wydaje mi się że trudno będzie
> stworzyć dobry indeks na substringach, co oznacza że wyszukiwanie takich
> rekordów będzie zawsze wymagało fullscana po tabeli, co przy dużej ich
> liczbie będzie bardzo długie.
>
> pozdr
>
> Radek

Zrób funkcję, która zwróci ci liczbę (int4) z numeru:

int4(substring( number from '#"%#"/__' for '#' )) << 24 +
int4(substring( number from '%/#"__#"' for '#' ))

wtedy będziesz sortował order by funckja(numer). jeżei teraz założysz
indeks funkcyjny, to powinno być ok

pozdrawiam
Robert Grabowski
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= =?ISO-8859-2?Q?Narz=EAdzie_do_budowania_zapyta=F1_SQL=2C?==?I SO-8859-2?Q?_PL/PgSQL=2C_PL/SQL=2C_T-SQL?= [ms sql] =?ISO-8859-2?Q?wy=B6wietlenie_pierwszych_5_rekord?==?ISO-8859-2?Q?=F3w_z_zapytania_=3F_odpowiednik_ROWNUM_w_o?== ?ISO-8859-2?Q?raclu_dla_MS_SQL=27a?= phpMyAdmin zadaje =?ISO-8859-2?Q?z=B3e_zapytania=2E=2E=2E_Dl?==?ISO-8859-2?Q?aczego=3F?= [MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?= [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [mysql/php] jak =?ISO-8859-2?Q?zliczy=E6_ilo=B6=E6_unikalnyc?==?ISO-8859-2?Q?h_rekord=F3w_w_jednym_zapytaniu=3F?= [MySQL] Zapytanie z =?ISO-8859-2?Q?dw=F3ch_tabel_na_raz_?==?ISO-8859-2?Q?i_grupowanie_po_wsp=F3lnym_polu=2E_Jak_=3F?= mecze sie i mecze i nic - zapytanie czesciowe
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ptsite.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com