Jak na browse velke tabulky v sql ?
Honza Pazdziora
adelton na informatics.muni.cz
Pondělí Únor 23 09:39:20 CET 2004
On Sun, Feb 22, 2004 at 01:20:24AM +0100, Jiri Borik wrote:
> >
> > select count(*) from TBL where NEWKEY<current_new_key
>
> Jenže takový dotaz není asi moc optimální. Pokud si to dobře představuji,
> tak se jedná o sekvenční průchod od začátku až k dané pozici, což u
> zmiňovaných velkých souborů nebude ono. Sice to udělá místo klienta
No, v optimalním případě máte na TBL.NEWKEY index, takže spočítat to
vezme O(log(n)).
> Nešlo by něco jako:
>
> select from TBL where where NEWKEY<current_new_key
> order by NEWKEY desc limit 50
> union
> select from TBL where where NEWKEY>=current_new_key
> order by NEWKEY limit 50
>
> To by mělo dát +-50 záznamů dle aktuální hodnoty klíče. A dle rowid mezi
> nimi najdu pracovní záznam a mám okolí podle nového klíče. Další stránky
> dopředu nebo vzad bych získával podobně.
Ano, například. Ještě je možno zvážit náhradu union za union all.
--
------------------------------------------------------------------------
Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Další informace o konferenci Databases