Jak na browse velke tabulky v sql ?

Kluvanek Martin kluvanek na tesnet.cz
Pondělí Únor 23 09:52:31 CET 2004


Honza Pazdziora napsal(a):

> 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)).
No a navyse si myslim, ze to xbase asi riesila nejak podobne, len o tom
aplikacia nevedela, bezalo to na lokalnom stroji nad lokalnymi DB subormi

> 
>> 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.
Akurat som si nie celkom isty, ako by to bolo s rychlostou, keby ta WHERE
podmienka bola o dost komplikovanejsia (vela filtrovacich vyrazov nad
neindexovanymi polozkami).
Typicky napriklad filter na hodnotu poznamky.

Ale na druhu stranu si myslim, ze to SQL servery zvladaju optimalizovat vcelku
vpohode.

> 


-- 
Martin Kluvanek
ved.odd. vyvoje (head of development department)
TES s.r.o
Testovani Energetickych Systemu (Testing of Energetical Systems)

Prazska 597
674 01 Trebic
Czech republic
tel:568 8384 28  (+420 5688384 28)
fax:568 8384 27  (+420 5688384 27)
homepage: http://www.tesnet.cz



Další informace o konferenci Databases