Hello Markus, Wednesday, March 22, 2006, 8:35:33 PM, you wrote:
MB>Send an EXPLAIN ANALYZE of the query along with the description of the MB>involved tables. Also hardware information (RAM, disks, CPU), what MB>other applications are running on that box and the parameter values in MB>postgresql.conf that you changed from the defaults would be MB>interesting. Celeron 1200 Tualatin 256kb cache HD 200GB 7200 512 SDRAM Postgresql 8.1.3 on debian sarge with standard settings No other running applications. EXPLAIN ANALYZE "Sort (cost=21413847.71..21413867.37 rows=7864 width=107) (actual time=615902.463..615933.049 rows=7881 loops=1)" " Sort Key: dostawcy.id_dostawcy" " -> Group (cost=1360.03..21413073.50 rows=7864 width=107) (actual time=473.511..615628.474 rows=7881 loops=1)" " -> Sort (cost=1360.03..1379.69 rows=7864 width=107) (actual time=324.260..407.732 rows=7881 loops=1)" " Sort Key: towar.id_towar, towar.key2, towar.nazwa, towar.min1, towar.max1, towar.ilosc_jed, towar.ilosc_nom, dostawcy.id_dostawcy, jednostka_miary.jednostka, towar.ilosc_paczkowa, towar.key1" " -> Hash Left Join (cost=2.21..585.81 rows=7864 width=107) (actual time=0.607..178.794 rows=7881 loops=1)" " Hash Cond: ("outer".id_jednostka_miary = "inner".id_jednostka_miary)" " -> Hash Left Join (cost=1.14..466.78 rows=7864 width=103) (actual time=0.397..121.835 rows=7881 loops=1)" " Hash Cond: ("outer".id_dostawcy = "inner".id_dostawcy)" " -> Seq Scan on towar (cost=0.00..347.68 rows=7864 width=103) (actual time=0.160..60.079 rows=7881 loops=1)" " Filter: policzalne" " -> Hash (cost=1.11..1.11 rows=11 width=4) (actual time=0.185..0.185 rows=11 loops=1)" " -> Seq Scan on dostawcy (cost=0.00..1.11 rows=11 width=4) (actual time=0.085..0.126 rows=11 loops=1)" " -> Hash (cost=1.06..1.06 rows=6 width=12) (actual time=0.173..0.173 rows=6 loops=1)" " -> Seq Scan on jednostka_miary (cost=0.00..1.06 rows=6 width=12) (actual time=0.117..0.140 rows=6 loops=1)" " SubPlan" " -> Aggregate (cost=2722.71..2722.72 rows=1 width=14) (actual time=78.006..78.010 rows=1 loops=7881)" " -> Nested Loop (cost=64.33..2722.28 rows=171 width=14) (actual time=73.991..77.930 rows=6 loops=7881)" " -> Hash Join (cost=64.33..602.79 rows=368 width=12) (actual time=3.098..64.518 rows=627 loops=7881)" " Hash Cond: ("outer".id_zlecenia = "inner".id_zlecenia)" " -> Seq Scan on zlecenia_elementy (cost=0.00..488.85 rows=9185 width=20) (actual time=0.009..32.216 rows=9185 loops=7881)" " -> Hash (cost=63.98..63.98 rows=140 width=8) (actual time=4.849..4.849 rows=195 loops=1)" " -> Bitmap Heap Scan on zlecenia (cost=6.50..63.98 rows=140 width=8) (actual time=0.721..3.772 rows=195 loops=1)" " Recheck Cond: ((id_paczka = 52) OR (id_paczka = 50) OR (id_paczka = 53))" " -> BitmapOr (cost=6.50..6.50 rows=142 width=0) (actual time=0.549..0.549 rows=0 loops=1)" " -> Bitmap Index Scan on zlecenia_id_paczka (cost=0.00..2.17 rows=47 width=0) (actual time=0.427..0.427 rows=73 loops=1)" " Index Cond: (id_paczka = 52)" " -> Bitmap Index Scan on zlecenia_id_paczka (cost=0.00..2.17 rows=47 width=0) (actual time=0.059..0.059 rows=49 loops=1)" " Index Cond: (id_paczka = 50)" " -> Bitmap Index Scan on zlecenia_id_paczka (cost=0.00..2.17 rows=47 width=0) (actual time=0.039..0.039 rows=73 loops=1)" " Index Cond: (id_paczka = 53)" " -> Index Scan using zlezenia_towar_elementy_towar on zlecenia_towar (cost=0.00..5.75 rows=1 width=18) (actual time=0.015..0.015 rows=0 loops=4941387)" " Index Cond: ((zlecenia_towar.id_zlecenia_elementy = "outer".id_zlecenia_elementy) AND (zlecenia_towar.id_towar = $0))" "Total runtime: 615962.759 ms" \d towar max3 | smallint | default 0 max4 | smallint | default 0 typik | character varying(1) | default '_'::character varying id_grupa_rabatowa | integer | not null default 0 id_jednostka_miary | integer | not null default 0 id_vat | integer | not null default 0 id_typ_towaru | integer | not null default 0 id_dostawcy | integer | not null default 0 grupa_produkcji | smallint | dodatek | boolean | not null default false policzalne | boolean | not null default true simport | character varying(50) | czy_procent | boolean | not null default false subtyp | character varying(35) | kontofk | character varying(40) | typks | character varying(30) | nazwarodzaju | character varying(50) | nazwakatalogu | character varying(250) | waluta | character varying(3) | not null default 'PLN'::character varying bank | character varying(5) | not null default 'NBP'::character varying procent_do_wyceny | smallint | not null default 0 waga | numeric(24,4) | not null default 0 cena_z | numeric(24,4) | not null default 0 ilosc_paczkowa | numeric(24,4) | not null default 0 ilosc_jed | numeric(24,4) | not null default 1 ilosc_nom | numeric(24,4) | not null default 1 odpad | numeric(24,4) | not null default 0 cena_jedn | numeric(24,4) | not null default 0 roboczojednostka | numeric(24,4) | not null default 0 Indexes: "towar_pkey" PRIMARY KEY, btree (id_towar) "towar_key1" btree (key1) "towar_key2" btree (key2) Foreign-key constraints: "$1" FOREIGN KEY (id_grupa_rabatowa) REFERENCES grupa_rabatowa(id_grupa_rabatowa) ON UPDATE CASCADE ON DELETE SET NULL "$2" FOREIGN KEY (id_jednostka_miary) REFERENCES jednostka_miary(id_jednostka_miary) ON UPDATE CASCADE ON DELETE SET NULL "$3" FOREIGN KEY (id_vat) REFERENCES vat(id_vat) ON UPDATE CASCADE ON DELETE SET NULL "$4" FOREIGN KEY (id_typ_towaru) REFERENCES typ_towaru(id_typ_towaru) ON UPDATE CASCADE ON DELETE SET NULL "$5" FOREIGN KEY (id_dostawcy) REFERENCES dostawcy(id_dostawcy) ON UPDATE CASCADE ON DELETE SET NULL Triggers: towar_domyslne BEFORE INSERT ON towar FOR EACH ROW EXECUTE PROCEDURE domyslne_ustawienia() zmiana_wagi AFTER UPDATE ON towar FOR EACH ROW EXECUTE PROCEDURE waga_przelicz() \d zlecenia_towar Table "public.zlecenia_towar" Column | Type | Modifiers ----------------------+-----------------------+---------------------------------------------------------------------------- id_zlecenia_towar | bigint | not null default nextval('zlecenia_towar_id_zlecenia_towar_seq'::regclass) id_zlecenia_elementy | bigint | id_towar | bigint | serwer | smallint | gdzie | character varying(1) | not null default 'p'::character varying opismf | character varying(30) | waga | numeric(24,4) | not null default 0 sprzedaz_c | numeric(24,4) | not null default 0 zakup_c | numeric(24,4) | not null default 0 ilosc | numeric(48,4) | not null default 0 wysokosc | numeric(48,4) | not null default 0 szerokosc | numeric(48,4) | not null default 0 realizacja | numeric(48,4) | not null default 0 Indexes: "zlecenia_towar_pkey" PRIMARY KEY, btree (id_zlecenia_towar) "zlecenia_towar_id_towar" btree (id_towar) "zlecenia_towar_id_zlecenia_elementy" btree (id_zlecenia_elementy) "zlecenia_towar_serwer" btree (serwer) "zlezenia_towar_elementy_towar" btree (id_zlecenia_elementy, id_towar) Foreign-key constraints: "$1" FOREIGN KEY (id_zlecenia_elementy) REFERENCES zlecenia_elementy(id_zlecenia_elementy) ON UPDATE CASCADE ON DELETE CASCADE "$2" FOREIGN KEY (id_towar) REFERENCES towar(id_towar) ON UPDATE CASCADE ON DELETE CASCADE Triggers: insert_waga_elementu BEFORE INSERT ON zlecenia_towar FOR EACH ROW EXECUTE PROCEDURE waga_wstaw() zmiana_waga_elementy AFTER INSERT OR UPDATE ON zlecenia_towar FOR EACH ROW EXECUTE PROCEDURE waga_elementy() \d zlecenia_elementy vat | smallint | default 0 serwer | smallint | wykonane_okna | smallint | not null default 0 ksiegowosc_okna | smallint | not null default 0 figura | character varying(50) | parametr | character varying(50) | tx1 | character varying(50) | tx2 | character varying(50) | tx3 | character varying(50) | opis | character varying(255) | datap | date | zmiana | smallint | not null default 0 linia | smallint | not null default 0 sz_szwiatlo | numeric(24,4) | wy_szwiatlo | numeric(24,4) | sz | numeric(24,4) | wy | numeric(24,4) | wartosc_netto_mat | numeric(24,4) | not null default 0 wartosc_netto_mat_jed | numeric(24,4) | not null default 0 waga_all | numeric(24,4) | not null default 0 waga_one | numeric(24,4) | not null default 0 metry_one | numeric(24,4) | not null default 0 metry_all | numeric(24,4) | not null default 0 metryb_one | numeric(24,4) | not null default 0 metryb_all | numeric(24,4) | not null default 0 cena | numeric(48,4) | cena_netto | numeric(48,4) | sprzedaz | numeric(48,4) | default 0 zakuppr | numeric(48,4) | not null default 0 Indexes: "zlecenia_elementy_pkey" PRIMARY KEY, btree (id_zlecenia_elementy) "zlecenia_elementy_data_p" btree (datap) "zlecenia_elementy_id_zlecenia" btree (id_zlecenia) "zlecenia_elementy_nr_w_zleceniu" btree (nr_w_zleceniu) "zlecenia_elementy_serwer" btree (serwer) Foreign-key constraints: "$1" FOREIGN KEY (id_zlecenia) REFERENCES zlecenia(id_zlecenia) ON UPDATE CASCADE ON DELETE CASCADE Triggers: ilosc_okien_w_zleceniu AFTER INSERT ON zlecenia_elementy FOR EACH ROW EXECUTE PROCEDURE policz_okna_w_zleceniu() ilosc_zrobionych_okien_w_zleceniu AFTER UPDATE ON zlecenia_elementy FOR EACH ROW EXECUTE PROCEDURE policz_zrobione_okna_w _zleceniu() insert_metry_elementu BEFORE INSERT ON zlecenia_elementy FOR EACH ROW EXECUTE PROCEDURE metry_wstaw() \d zlecenia linia | smallint | not null default 0 status | integer | not null default 0 Indexes: "zlecenia_pkey" PRIMARY KEY, btree (id_zlecenia) "zlecenia_data" btree (data) "zlecenia_data_p" btree (data, id_paczka) "zlecenia_data_pt" btree (data, id_paczka_tir) "zlecenia_data_zam" btree (data_zam) "zlecenia_data_zam_p" btree (data_zam, id_paczka) "zlecenia_data_zam_pt" btree (data_zam, id_paczka_tir) "zlecenia_id_firmy" btree (id_firmy) "zlecenia_id_paczka" btree (id_paczka) "zlecenia_id_paczka_tir" btree (id_paczka_tir) "zlecenia_ksiegowosc" btree (ksiegowosc) "zlecenia_ksiegowosc_p" btree (ksiegowosc, id_paczka) "zlecenia_ksiegowosc_pt" btree (ksiegowosc, id_paczka_tir) "zlecenia_ok" btree (ok) "zlecenia_ok_p" btree (ok, id_paczka) "zlecenia_ok_pt" btree (ok, id_paczka_tir) "zlecenia_proforma" btree (proforma) "zlecenia_proforma_p" btree (proforma, id_paczka) "zlecenia_proforma_pt" btree (proforma, id_paczka_tir) "zlecenia_serwer" btree (serwer) "zlecenia_zamkniete" btree (zamkniete) "zlecenia_zamkniete_czas" btree (zamkniete_czas) "zlecenia_zamkniete_czas_p" btree (zamkniete_czas, id_paczka) "zlecenia_zamkniete_czas_pt" btree (zamkniete_czas, id_paczka_tir) "zlecenia_zamkniete_data" btree (zamkniete_data) "zlecenia_zamkniete_data_p" btree (zamkniete_data, id_paczka) "zlecenia_zamkniete_data_pt" btree (zamkniete_data, id_paczka_tir) "zlecenia_zamkniete_p" btree (zamkniete, id_paczka) "zlecenia_zamkniete_pt" btree (zamkniete, id_paczka_tir) "zlecenia_zamowienie" btree (zamowienie) "zlecenia_zamowienie_p" btree (zamowienie, id_paczka) "zlecenia_zamowienie_pt" btree (zamowienie, id_paczka_tir) Foreign-key constraints: "$1" FOREIGN KEY (id_firmy) REFERENCES firmy(id_firmy) ON UPDATE CASCADE ON DELETE SET NULL "$2" FOREIGN KEY (id_paczka) REFERENCES paczka(id_paczka) ON UPDATE CASCADE ON DELETE SET NULL "$3" FOREIGN KEY (id_paczka_tir) REFERENCES paczka_tir(id_paczka_tir) ON UPDATE CASCADE ON DELETE SET NULL Triggers: ststus_zlecenia BEFORE UPDATE ON zlecenia FOR EACH ROW EXECUTE PROCEDURE test_ststusu_zlecenia() synchronizacja_kontrachenta AFTER INSERT OR UPDATE ON zlecenia FOR EACH ROW EXECUTE PROCEDURE synchrinizacja_firm() \d dostawcy Table "public.dostawcy" Column | Type | Modifiers -------------+------------------------+---------------------------------------------------------------- id_dostawcy | integer | not null default nextval('dostawcy_id_dostawcy_seq'::regclass) code | integer | skrot | character varying(50) | nazwa | character varying(50) | nip | character varying(20) | adres | character varying(50) | miasto | character varying(30) | kod | character varying(6) | woj | character varying(20) | panstwo | character varying(20) | telefon | character varying(15) | mobile | character varying(15) | fax | character varying(15) | email | character varying(50) | bank | character varying(50) | konto | character varying(100) | regon | character varying(20) | kk | character varying(50) | Indexes: "dostawcy_pkey" PRIMARY KEY, btree (id_dostawcy) \d jednostka_miary Table "public.jednostka_miary" Column | Type | Modifiers --------------------+-----------------------+------------------------------------------------------------------------------ id_jednostka_miary | integer | not null default nextval('jednostka_miary_id_jednostka_miary_seq'::regclass) jednostka | character varying(4) | not null opis | character varying(20) | not null Indexes: "jednostka_miary_pkey" PRIMARY KEY, btree (id_jednostka_miary) -- Best regards, Maciej mailto:[EMAIL PROTECTED] ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster