[ MarkoBalkan @ 07.01.2010. 13:05 ] @
recimo query

select count(*) from mojatabela

tabela ima 10 M slogova, query traje 10 s, x M, query traje približno x sekundi.


za sum isto tako.

neke baze izvrše gornji query za 2-3 s, vrijeme se povećava linearno.

znači za 30 M slogova treba 7-9 s, a firebirdu 30 s pa čak i malo više.



[ savkic @ 07.01.2010. 23:05 ] @
> select count(*) from mojatabela
> tabela ima 10 M slogova, query traje 10 s, x M, query traje približno x sekundi.

FB mora da prođe kroz sve recorde (eventualno i kroz izmenjenje verzije) da bi ti vratio count, zavisno od okolnosti može biti prilikom toga startovan i GC (prvi put kada se dođe do obrisanog ili izmenjegog recorda koji više ne važi). Dakle to ponašanje je normalno u FB i svim drugim MGA bazama. BTW zašto ti je potrebno da uradiš count?
[ dogriz @ 08.01.2010. 06:21 ] @
Citat:
MarkoBalkan:
select count(*) from mojatabela

Pokušaj još da uradiš count po primarnom ključu umesto *, da vidiš da li će biti razlike u brzini izvršavanja, npr:
Code:

select count(ID) from mojatabela
[ MarkoBalkan @ 08.01.2010. 10:01 ] @
Citat:
savkic: > select count(*) from mojatabela
> tabela ima 10 M slogova, query traje 10 s, x M, query traje približno x sekundi.

FB mora da prođe kroz sve recorde (eventualno i kroz izmenjenje verzije) da bi ti vratio count, zavisno od okolnosti može biti prilikom toga startovan i GC (prvi put kada se dođe do obrisanog ili izmenjegog recorda koji više ne važi). Dakle to ponašanje je normalno u FB i svim drugim MGA bazama. BTW zašto ti je potrebno da uradiš count?



kod postgresql-a recimo ovaj isti query traje 2-3 sekunde.