<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - duży delete]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=589&amp;type=atom"/>
	<updated>2011-05-16T07:11:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=589</id>
		<entry>
			<title type="html"><![CDATA[Odp: duży delete]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2514#p2514"/>
			<content type="html"><![CDATA[[quote]
miejsce, jak tabela bedzie duża to może być problem
[/quote]
Niestety coś za coś. Albo wydajność, CREATE TABLE AS ... SELECT zawsze będzie szybszy od DELETE bo nie wymaga rollbacków, albo oszczędność na dyskach.

[quote]
co z insertami ktore wpadna pomiedzy kopia do nowej tabeli a zmianą nazwy tymczasowej
[/quote]
Pewnie będzie potrzebne jakieś okienko serwisowe. O jakiej ilości do usunięcia tu mówimy? I może pokaż plan wykonania tego delete'a co to się nie wykonuje.

Czy na tabeli są jakieś indeksy, klucze obce?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-05-16T07:11:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2514#p2514</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: duży delete]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2513#p2513"/>
			<content type="html"><![CDATA[Nie usuwam całej tabeli, widze dwaproblemy w twoim rozwiązaniu
-miejsce, jak tabela bedzie duża to może być problem
-co z insertami ktore wpadna pomiedzy kopia do nowej tabeli a zmianą nazwy tymczasowej, merge danych może być kosztowne]]></content>
			<author>
				<name><![CDATA[roku]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1233</uri>
			</author>
			<updated>2011-05-15T19:45:27Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2513#p2513</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: duży delete]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2512#p2512"/>
			<content type="html"><![CDATA[W postgresie jest klauzula return którą możesz w funkcji plpgsql przypisać do zmiennej.
Ale takie usuwanie to raczej średni pomysł.
Jesli chcesz usunąć zawartośc całej tabeli to proponuję użyć polecenie TRUNCATE, zdecydowanie szybsze niż DELETE.
Jesli chcesz usunąć tylko niektóre wiersze to proponuję tak
1) stworzyć tabelę tymczasową w wierszami z tabeli oryginalnej, których nie chcesz usuwać (CREATE TABLE .. AS SELECT..)
2) Odtworzyć na tabeli tymczasowej indeksy, klucze itp itd. tak aby była zgodna z tabelą oryginalną.
3) usunąć lub zmienić nazwę tabeli oryginalnej
4) zmienić nazwę tabeli tymczasowej na taką jaką na początku miała tabela oryginalna]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2011-05-15T14:49:50Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2512#p2512</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[duży delete]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2511#p2511"/>
			<content type="html"><![CDATA[witam,

jestem początkujący jeśli chodzi o postgresa 

szukam sposobu na usunięcie dużej ilości danych z tabeli, w jednym delete nie bardzo mi to się wykonuje 
chciałbym zrobic loopa i wycinac po kilka tysięcy tylko teraz jak sprawdzać czy mam jeszcze rekordy do usunięcia.
robienie counta po każdym delete zamorduje wydajność, w MS SQL jest funkcja systemowa @@rowcount która zwraca ile było usuniętych rekordów i mogę sprawdzać przy usuwaniu 1000 rekordów czy @@rowcount =1000 i jeśli nie to już nie ma co usówać, szukam czegoś takiego w postgresie.
no chyba, że robi się to zupełnie inaczej ;)

rk]]></content>
			<author>
				<name><![CDATA[roku]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1233</uri>
			</author>
			<updated>2011-05-15T07:09:30Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2511#p2511</id>
		</entry>
</feed>
