On 2005-11-26, at 19:55, A.L.E.C wrote:
Tommy Vercetti napisał(a):
U nas na PIII700 debian, 500 faktur generuje sie około 1,5minuty
Jesli to generuje php/perl a nie baza to zrozumiale. Przypominam ze w postgresie da sie pisac dosc rozbudowane procedury.
Przeprowadziłem testy na swoim P4 2,6GHz z HT, dysk ATA100. Bazy mysql-5.0.15 i pgsql-8.0.0. W bazie 5000 faktur. Lista wyświetla się w kilka sekund, a samo zapytanie wykonuje się poniżej sekundy. LMS w wersji cvsowej (wprowadziłem niewielką modyfikację w stosunku do 1.7.6). A oto przedmiotowe zapytanie, jakby ktoś był ciekawy:
KIlka sekund na ktorej bazie ? Probowales psql 8.1 jeszcze ?
fajno, dzieki. Ja uzywam LMSa tylko do tego zeby zarzadzac kontami i wylaczac tych co nie placa, przydzielac IP, shape-owac lacze.
Mozesz mi podrzucic taka baze testowa ? w jaki sposob wygenerowales tyle faktur ? a moze trzeba poprosic tych ktorzy maja problem z wydajnoscia o podrzucenie ich danych (oczywiscie w pelnej dyskrecji).
SELECT documents.id AS id, number, cdate, type, customerid, name, address, zip, city, template, closed, CASE reference WHEN 0 THEN SUM (a.value*a.count) ELSE SUM((a.value+b.value)*(a.count+b.count)) - SUM(b.value*b.count) END AS value, COUNT(a.docid) AS count FROM documents LEFT JOIN invoicecontents a ON (a.docid = documents.id) LEFT JOIN invoicecontents b ON (reference = b.docid AND a.itemid = b.itemid) LEFT JOIN numberplans ON (numberplanid = numberplans.id) WHERE (type = 3 OR type = 1) GROUP BY documents.id, number, cdate, customerid, name, address, zip, city, template, closed, type, reference ORDER BY documents.id asc
Takie pytanie jeszcze do tych ktorzy maja problem z szybkoscia. Zagladaliscie moze do postgres.conf ? Tam jest mnóstwo parametrów które należałoby sobie podstroić ;) na przykład rozmiar shared memory, i kilka innych. W przypadku dużych ilości danych wypada trzymać choć część w cache.
dzieki