ActivePlayer
27.11.2005, 20:31:23
w manualu mysqla cos takiego znajde... a pg niestety nie potrafie... trzeba count(*)? nie wydaje mi sie

any idea ?
DeyV
27.11.2005, 23:11:09
O ile się nie mylę, depesz kiedyś napisał, że w przypadku bardzo dużych tabel count() rzeczywiście może być mało wydajne.
Niestety - nie było dla niego prostej i wydajnej alternatywy wbudowanej w PG
Natomiast nic nie stoii na przeszkodzie, by problem rozwiązać samodzielnie.
Wystarczy bowiem utworzyć dodatkową tabelę lub np. SEQUENCE w której będzie się przechowywać informację o ilości wierszy. A następnie utworzyć odpowiedniej trigery ON DELETE i UPDATE które będę zmniejszać lub powiększać tą wartość.
ActivePlayer
27.11.2005, 23:20:41
jest pewien problem... to jest count na widoku.. hmm
SongoQ
27.11.2005, 23:24:40
@DeyV Tak sie zastanawiam co jest lepsze tabela czy sekwencja i jak to sie ma do czasu zwrocenia. Jesli interesowala by nas kazda tabela to chyba lepiej zrobic 1 tabele i zapisywac ilosc dla kazdej tabeli.
ActivePlayer
27.11.2005, 23:31:53
w moim przypadku to widoki.. bedzie ich okolo 12...
SongoQ
27.11.2005, 23:36:28
Cytat
w moim przypadku to widoki.. bedzie ich okolo 12...
Odnosnie widokow nic nie przychodzi mi do glowy bo wynikiem widoku moze byc nieokreslona liczba rekordow (chyba ze widok jest 1 tabela i wtedy mozesz triggera napisac z tymi wlasnie warunkami). Problem pojawi sie wtedy kiedy w kodzie php dokladasz dodatkowe warunki. Troche takie glupie rozwiazanie.
DeyV
27.11.2005, 23:39:54
Obawiam się, że w takim przypadku jedynym rozwiazaniem jest nałożenie na wszystkie "zainteresowane" tablele trigerów wyzwalajacych funkcję przeliczajacą odpowiednie widoki i zapisującą wyniki w sekwencjach / tabeli.
Jeśli updateów / deletów będzie znacznie mniej, niż selectów, to takie rozwiązanie powinno być najekonomiczniejsze.
ps. Sądzę, że praca na sekwencjach będzie szybsza, choć pewnie mniej wygodna.
ActivePlayer
27.11.2005, 23:44:27
jestem troszke niezadowolony z tego obrotu spraw ... myslalem ze pg to bedzie 1 rzecz przed jaka zrobilem ;o od dawna... lekko trzeba sie nabiegac zeby cokolwiek osiagnac...
SongoQ
27.11.2005, 23:44:48
@ActivePlayer A ile rekordow przewidujesz w tabelach, bo jesli wartosci beda male to szkoda czasu na takie kombinowanie.
ActivePlayer
27.11.2005, 23:49:34
przewiduje docelowo bardzo duzo (nie mam pojecia ile - raczek na tys na poczatek)

a do tego z dnia na dzien więcej... mam pytanie jeszcze dot. wydajnosci... jak ma się skladanie widoku z joinami itd itp do wykonania zwyklego zapytania takiego jak 'zawartosc' tegoz widoku ?
SongoQ
27.11.2005, 23:59:17
Widok to tak naprawde jest zapytanie wiec nie ma roznicy czy przesylasz zapytanie czy wywolujesz widok. Z tego co pamietam to w momencie wykonanie widoku optymalizator dolancza kryteria do widoku robi z tego najbardziej optymalna postac i wykonuje. Sensu stosowanie nie ma co pisac.
Odnosnie zlaczen to juz klania sie dostajanie zapytan. Ulozenie tabel, odpowiednia kolejnosc warunkow, explain, indeksy.
ActivePlayer
28.11.2005, 00:03:27
no wlasnie... a najpierw trzeba miec o tym jakies(lepsze od wiedzy co to index) pojecie... no coz... manu is my friend... ten z pgsa mi jakos bardzo nie pasi... ale moze jakos przebrne...
SongoQ
28.11.2005, 00:10:21
Polecam pomoc z PGAdmina3 i oczywiscie google, najlepiej newsy. Ale mam taka nadzije ze userow PG bedzie wiecej i na forum.php.pl co 2 post bedzie w tym temacie
ActivePlayer
28.11.2005, 07:13:50
ta pomoc jest dlatego daremna, ze trzeba sie wczytac zeby wiedziec o czym piszą...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.