Otvety na chasto zadavaemye voprosy po PostgreSQL
- Data poslednego obnovleniya: Voskresen'e 5 Oktyabrya 10:25:21 EDT 2003
+ Data poslednego obnovleniya: Sreda 19 noyabrya 11:50:04 EDT 2003
Anglijskij variant soprovozhdaet: Bryus Mom'yan (Bruce Momjian)
(pgman@candle.pha.pa.us)
- Perevel na russkij: Viktor Vislobokov (victor_v@permonline.ru)
+ Perevel na russkij: Viktor Vislobokov (corochoone@perm.ru)
Samuyu svezhuyu anglijskuyu versiyu dokumenta mozhno najti na
http://www.PostgreSQL.org/docs/faqs/FAQ.html.
http://www.PostgreSQL.org
- Esche suschestvuet IRC kanal na EFNet i OpenProjects, s nazvaniem
+ Esche suschestvuet IRC kanal na EFNet i Freenode, s nazvaniem
#PostgreSQL. YA ispol'zuyu dlya podklyucheniya k `etomu kanalu komandu
- Unix irc -c '#PostgreSQL' "$USER" irc.phoenix.net.
+ Unix irc -c '#PostgreSQL' "$USER" irc.phoenix.net. ili irc -c
+ '#PostgreSQL' "$USER" irc.freenode.net.
Spisok kommercheskoj podderzhki kompanij dostupen na
http://techdocs.postgresql.org/companies.php.
1.7) Kakaya poslednyaya versiya?
- Poslednij vypusk PostgreSQL - `eto versiya 7.3.4.
+ Poslednij vypusk PostgreSQL - `eto versiya 7.4.
My planiruem vypuskat' novye versii kazhdye 6-8 mesyacev.
2.3) Est' li u PostgreSQL graficheskij interfejs pol'zovatelya?
Da, suschestvuet neskol'ko graficheskih interfejsov dlya PostgreSQL.
- `Eto PgAccess (http://www.pgaccess.org, PgAdmin II
+ `Eto PgAccess (http://www.pgaccess.org, PgAdmin III
(http://www.pgadmin.org, Win32-only), RHDB Admin (
http://sources.redhat.com/rhdb/) i Rekall (
http://www.thekompany.com/products/rekall/, kommercheskij). Takzhe
Suschestvuyut sleduyuschie ogranicheniya:
Maksimal'nyj razmer bazy? neogranichen (suschestvuyut bazy na
-4 TB)
+32 TB)
Maksimal'nyj razmer tablicy? 32 TB
Maksimal'nyj razmer zapisi? 1.6 TB
Maksimal'nyj razmer polya? 1 GB
4.15.1) Kak mne sozdat' pole serial/s-avto-uvelicheniem?
PostgreSQL podderzhivaet tip dannyh SERIAL. On avtomaticheski sozdaet
- posledovatel'nost' i indeks dlya kolonki. Naprimer:
+ posledovatel'nost'. Naprimer:
CREATE TABLE person (
id SERIAL,
name TEXT
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
- CREATE UNIQUE INDEX person_id_key ON person ( id );
Smotrite podrobnosti o posledovatel'nostyah na stranice rukovodstva
posvyaschennoj create_sequence. Vy takzhe mozhete ispol'zovat' kazhdoe
4.22) Pochemu moi podzaprosy, ispol'zuyuschie IN tak medlenno rabotaeyut?
- V nastoyaschij moment, my svyazyvaem pozaprosy dlya vneshnih zaprosov
- cherez posledovatel'nyj perebor rezul'tata podzaprosa dlya kazhdoj
- zapisi vneshnego zaprosa. Esli podzapros vozvraschaet tol'ko neskol'ko
- zapisej i vneshnij zapros vozvraschaet mnogo zapisej, IN rabotaet
- naibolee bystro. CHtoby uvelichit' skorost' v drugih zaprosah,
- zamenite IN na EXISTS:
+ V versiyah do 7.4, podzaprosy svyazyvalis' s roditel'skimi zaprosami
+ cherez posledovatel'nyj perebor rezul'tatov pozaprosa dlya kazhdoj
+ zapisi roditel'skogo zaprosa. Esli podzapros vozvraschaet tol'ko
+ neskol'ko zapisej, a roditel'skij zapros vozvraschaet mnogo zapisej,
+ IN rabotaet naibolee bystro. CHtoby uvelichit' skorost' v drugih
+ zaprosah, zamenite IN na EXISTS:
SELECT *
FROM tab
WHERE col IN (SELECT subcol FROM subtab);
WHERE EXISTS (SELECT subcol FROM subtab WHERE subcol = col);
CHtoby takaya konstrukciya rabotala bystro, kolonka subcol dolzhna
- byt' proindeksirovana. `Eta problema proizvoditel'nosti budet
- ustranena v versii 7.4.
+ byt' proindeksirovana.
+
+ V versii 7.4 i vyshe, IN fakticheski ispol'zuet takoj zhe mehanizm
+ svyazyvaniya kak i obychnye zaprosy, po`etomu predpochtitel'nym
+ yavlyaetsya ispol'zovanie EXISTS
+ .
4.23) Kak mne vypolnit' vneshnee svyazyvanie?
<TITLE>PostgreSQL FAQ</TITLE>
</HEAD>
- <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000"
- alink="#0000ff">
+ <BODY bgcolor="#ffffff" text="#000000" link="#ff0000" vlink="#a00000" alink="#0000ff">
<H1>ïÔ×ÅÔÙ ÎÁ ÞÁÓÔÏ ÚÁÄÁ×ÁÅÍÙÅ ×ÏÐÒÏÓÙ ÐÏ PostgreSQL</H1>
- <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: ÷ÏÓËÒÅÓÅÎØÅ 5 ïËÔÑÂÒÑ 10:25:21 EDT 2003</P>
+ <P>äÁÔÁ ÐÏÓÌÅÄÎÅÇÏ ÏÂÎÏ×ÌÅÎÉÑ: óÒÅÄÁ 19 ÎÏÑÂÒÑ 11:50:04 EDT 2003</P>
<P>áÎÇÌÉÊÓËÉÊ ×ÁÒÉÁÎÔ ÓÏÐÒÏ×ÏÖÄÁÅÔ: âÒÀÓ íÏÍØÑÎ (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
</P>
<P>ðÅÒÅ×ÅÌ ÎÁ ÒÕÓÓËÉÊ: ÷ÉËÔÏÒ ÷ÉÓÌÏÂÏËÏ× (<A href=
- "mailto:pgman@candle.pha.pa.us">victor_v@permonline.ru</A>)<BR>
+ "mailto:pgman@candle.pha.pa.us">corochoone@perm.ru</A>)<BR>
</P>
<P>óÁÍÕÀ Ó×ÅÖÕÀ ÁÎÇÌÉÊÓËÕÀ ×ÅÒÓÉÀ ÄÏËÕÍÅÎÔÁ ÍÏÖÎÏ ÎÁÊÔÉ ÎÁ
<A href="http://www.PostgreSQL.org">http://www.PostgreSQL.org</A>
</BLOCKQUOTE>
- <P>åÝÅ ÓÕÝÅÓÔ×ÕÅÔ IRC ËÁÎÁÌ ÎÁ EFNet É OpenProjects, Ó ÎÁÚ×ÁÎÉÅÍ
+ <P>åÝÅ ÓÕÝÅÓÔ×ÕÅÔ IRC ËÁÎÁÌ ÎÁ EFNet É Freenode, Ó ÎÁÚ×ÁÎÉÅÍ
<I>#PostgreSQL</I>. ñ ÉÓÐÏÌØÚÕÀ ÄÌÑ ÐÏÄËÌÀÞÅÎÉÑ Ë ÜÔÏÍÕ ËÁÎÁÌÕ ËÏÍÁÎÄÕ Unix
- <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE></P>
+ <CODE>irc -c '#PostgreSQL' "$USER" irc.phoenix.net.</CODE> ÉÌÉ
+ <CODE>irc -c '#PostgreSQL' "$USER" irc.freenode.net.</CODE></P>
<P>óÐÉÓÏË ËÏÍÍÅÒÞÅÓËÏÊ ÐÏÄÄÅÒÖËÉ ËÏÍÐÁÎÉÊ ÄÏÓÔÕÐÅÎ ÎÁ
<A href="http://techdocs.postgresql.org/companies.php">http://techdocs.postgresql.org/companies.php</A>.</P>
<H4><A name="1.7">1.7</A>) ëÁËÁÑ ÐÏÓÌÅÄÎÑÑ ×ÅÒÓÉÑ?</H4>
- <P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.3.4.</P>
+ <P>ðÏÓÌÅÄÎÉÊ ×ÙÐÕÓË PostgreSQL - ÜÔÏ ×ÅÒÓÉÑ 7.4.</P>
<P>íÙ ÐÌÁÎÉÒÕÅÍ ×ÙÐÕÓËÁÔØ ÎÏ×ÙÅ ×ÅÒÓÉÉ ËÁÖÄÙÅ 6-8 ÍÅÓÑÃÅ×.</P>
<P>äÁ, ÓÕÝÅÓÔ×ÕÅÔ ÎÅÓËÏÌØËÏ ÇÒÁÆÉÞÅÓËÉÈ ÉÎÔÅÒÆÅÊÓÏ× ÄÌÑ PostgreSQL.
üÔÏ PgAccess (<A href="http://www.pgaccess.org/">http://www.pgaccess.org</A>,
- PgAdmin II (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>,
+ PgAdmin III (<A href="http://www.pgadmin.org/">http://www.pgadmin.org</A>,
Win32-only), RHDB Admin (<A href="http://sources.redhat.com/rhdb/">
http://sources.redhat.com/rhdb/</A>) É Rekall
(<A href="http://www.thekompany.com/products/rekall/">
<P>óÕÝÅÓÔ×ÕÀÔ ÓÌÅÄÕÀÝÉÅ ÏÇÒÁÎÉÞÅÎÉÑ:</P>
<PRE>
- íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÁÚÙ? ÎÅÏÇÒÁÎÉÞÅÎ (ÓÕÝÅÓÔ×ÕÀÔ ÂÁÚÙ ÎÁ 4 TB)
+ íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÂÁÚÙ? ÎÅÏÇÒÁÎÉÞÅÎ (ÓÕÝÅÓÔ×ÕÀÔ ÂÁÚÙ ÎÁ 32 TB)
íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÔÁÂÌÉÃÙ? 32 TB
íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÚÁÐÉÓÉ? 1.6 TB
íÁËÓÉÍÁÌØÎÙÊ ÒÁÚÍÅÒ ÐÏÌÑ? 1 GB
serial/Ó-Á×ÔÏ-Õ×ÅÌÉÞÅÎÉÅÍ?</H4>
<P>PostgreSQL ÐÏÄÄÅÒÖÉ×ÁÅÔ ÔÉÐ ÄÁÎÎÙÈ <SMALL>SERIAL</SMALL>. ïÎ
- Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÅÔ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ É ÉÎÄÅËÓ ÄÌÑ ËÏÌÏÎËÉ.
- îÁÐÒÉÍÅÒ:</P>
+ Á×ÔÏÍÁÔÉÞÅÓËÉ ÓÏÚÄÁÅÔ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔØ. îÁÐÒÉÍÅÒ:</P>
<PRE>
CREATE TABLE person (
id SERIAL,
id INT4 NOT NULL DEFAULT nextval('person_id_seq'),
name TEXT
);
- CREATE UNIQUE INDEX person_id_key ON person ( id );
</PRE>
óÍÏÔÒÉÔÅ ÐÏÄÒÏÂÎÏÓÔÉ Ï ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÏÓÔÑÈ ÎÁ ÓÔÒÁÎÉÃÅ ÒÕËÏ×ÏÄÓÔ×Á
<H4><A name="4.22">4.22</A>) ðÏÞÅÍÕ ÍÏÉ ÐÏÄÚÁÐÒÏÓÙ, ÉÓÐÏÌØÚÕÀÝÉÅ
<CODE><SMALL>IN</SMALL></CODE> ÔÁË ÍÅÄÌÅÎÎÏ ÒÁÂÏÔÁÅÀÔ?</H4>
- <P>÷ ÎÁÓÔÏÑÝÉÊ ÍÏÍÅÎÔ, ÍÙ Ó×ÑÚÙ×ÁÅÍ ÐÏÚÁÐÒÏÓÙ ÄÌÑ ×ÎÅÛÎÉÈ ÚÁÐÒÏÓÏ×
- ÞÅÒÅÚ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ ÐÅÒÅÂÏÒ ÒÅÚÕÌØÔÁÔÁ ÐÏÄÚÁÐÒÏÓÁ ÄÌÑ ËÁÖÄÏÊ
- ÚÁÐÉÓÉ ×ÎÅÛÎÅÇÏ ÚÁÐÒÏÓÁ. åÓÌÉ ÐÏÄÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÔÏÌØËÏ ÎÅÓËÏÌØËÏ
- ÚÁÐÉÓÅÊ É ×ÎÅÛÎÉÊ ÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÍÎÏÇÏ ÚÁÐÉÓÅÊ,
+ <P>÷ ×ÅÒÓÉÑÈ ÄÏ 7.4, ÐÏÄÚÁÐÒÏÓÙ Ó×ÑÚÙ×ÁÌÉÓØ Ó ÒÏÄÉÔÅÌØÓËÉÍÉ ÚÁÐÒÏÓÁÍÉ
+ ÞÅÒÅÚ ÐÏÓÌÅÄÏ×ÁÔÅÌØÎÙÊ ÐÅÒÅÂÏÒ ÒÅÚÕÌØÔÁÔÏ× ÐÏÚÁÐÒÏÓÁ ÄÌÑ ËÁÖÄÏÊ
+ ÚÁÐÉÓÉ ÒÏÄÉÔÅÌØÓËÏÇÏ ÚÁÐÒÏÓÁ. åÓÌÉ ÐÏÄÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÔÏÌØËÏ ÎÅÓËÏÌØËÏ
+ ÚÁÐÉÓÅÊ, Á ÒÏÄÉÔÅÌØÓËÉÊ ÚÁÐÒÏÓ ×ÏÚ×ÒÁÝÁÅÔ ÍÎÏÇÏ ÚÁÐÉÓÅÊ,
<CODE><SMALL>IN</SMALL></CODE> ÒÁÂÏÔÁÅÔ ÎÁÉÂÏÌÅÅ ÂÙÓÔÒÏ. þÔÏÂÙ
Õ×ÅÌÉÞÉÔØ ÓËÏÒÏÓÔØ × ÄÒÕÇÉÈ ÚÁÐÒÏÓÁÈ, ÚÁÍÅÎÉÔÅ <CODE>IN</CODE> ÎÁ
<CODE>EXISTS</CODE>:</P>
</PRE>
þÔÏÂÙ ÔÁËÁÑ ËÏÎÓÔÒÕËÃÉÑ ÒÁÂÏÔÁÌÁ ÂÙÓÔÒÏ, ËÏÌÏÎËÁ <CODE>subcol</CODE>
- ÄÏÌÖÎÁ ÂÙÔØ ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÎÁ. üÔÁ ÐÒÏÂÌÅÍÁ ÐÒÏÉÚ×ÏÄÉÔÅÌØÎÏÓÔÉ ÂÕÄÅÔ
- ÕÓÔÒÁÎÅÎÁ × ×ÅÒÓÉÉ 7.4.
+ ÄÏÌÖÎÁ ÂÙÔØ ÐÒÏÉÎÄÅËÓÉÒÏ×ÁÎÁ.
+
+ <P>÷ ×ÅÒÓÉÉ 7.4 É ×ÙÛÅ, <CODE>IN</CODE> ÆÁËÔÉÞÅÓËÉ ÉÓÐÏÌØÚÕÅÔ ÔÁËÏÊ ÖÅ
+ ÍÅÈÁÎÉÚÍ Ó×ÑÚÙ×ÁÎÉÑ ËÁË É ÏÂÙÞÎÙÅ ÚÁÐÒÏÓÙ, ÐÏÜÔÏÍÕ ÐÒÅÄÐÏÞÔÉÔÅÌØÎÙÍ
+ Ñ×ÌÑÅÔÓÑ ÉÓÐÏÌØÚÏ×ÁÎÉÅ <CODE>EXISTS</CODE></P>.
<H4><A name="4.23">4.23</A>) ëÁË ÍÎÅ ×ÙÐÏÌÎÉÔØ ×ÎÅÛÎÅÅ Ó×ÑÚÙ×ÁÎÉÅ?</H4>