Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SQL_CALC_FOUND_ROWS
Forum PHP.pl > Forum > Bazy danych > PostgreSQL
ActivePlayer
w manualu mysqla cos takiego znajde... a pg niestety nie potrafie... trzeba count(*)? nie wydaje mi sie smile.gif any idea ?
DeyV
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
jest pewien problem... to jest count na widoku.. hmm
SongoQ
@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
w moim przypadku to widoki.. bedzie ich okolo 12...
SongoQ
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
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
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
@ActivePlayer A ile rekordow przewidujesz w tabelach, bo jesli wartosci beda male to szkoda czasu na takie kombinowanie.
ActivePlayer
przewiduje docelowo bardzo duzo (nie mam pojecia ile - raczek na tys na poczatek)smile.gif 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
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
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
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 tongue.gif
ActivePlayer
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.