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