Update Russian FAQ.

This commit is contained in:
Bruce Momjian 2002-08-23 02:53:20 +00:00
parent 3d801dbb1c
commit b5ccfc216a
2 changed files with 133 additions and 41 deletions

View File

@ -1,7 +1,7 @@
Ответы на часто задаваемые вопросы по PostgreSQL Ответы на часто задаваемые вопросы по PostgreSQL
Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002 Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002
Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) Английский вариант сопровождает: Брюс Момьян (Bruce Momjian)
(pgman@candle.pha.pa.us) (pgman@candle.pha.pa.us)
@ -61,6 +61,8 @@
пытаюсь подключиться к базе? пытаюсь подключиться к базе?
3.9) Что это за файлы pg_sorttempNNN.NN в моем каталоге с базой 3.9) Что это за файлы pg_sorttempNNN.NN в моем каталоге с базой
данных? данных?
3.10) Почему необходимо делать dump и restore при обновлении выпусков
PostgreSQL?
Вопросы эксплуатации Вопросы эксплуатации
@ -267,7 +269,7 @@
1.7) Какая последняя версия? 1.7) Какая последняя версия?
Последний выпуск PostgreSQL - это версия 7.2. Последний выпуск PostgreSQL - это версия 7.2.2.
Мы планируем выпускать новые версии каждые четыре месяца. Мы планируем выпускать новые версии каждые четыре месяца.
@ -414,7 +416,7 @@
некоторое количество ежемесячных и одноразовых расходов, которые некоторое количество ежемесячных и одноразовых расходов, которые
требуют денег. Если вы или ваша компания имеет деньги, которые можно требуют денег. Если вы или ваша компания имеет деньги, которые можно
передать в помощь нашим усилиям, пожалуйста посетите страничку передать в помощь нашим усилиям, пожалуйста посетите страничку
http://www.pgsql.com/pg_goodies и сделайте свой вклад. https://store.pgsql.com/shopping/index.php?id=1 и сделайте свой вклад.
Хотя на страничке говорится о PostgreSQL, Inc, пункт "contributions" Хотя на страничке говорится о PostgreSQL, Inc, пункт "contributions"
предназначен исключительно для поддержки проекта PostgreSQL и не предназначен исключительно для поддержки проекта PostgreSQL и не
@ -478,6 +480,9 @@
* TCL (libpgtcl) * TCL (libpgtcl)
* C Easy API (libpgeasy) * C Easy API (libpgeasy)
* Embedded HTML (PHP from http://www.php.net) * Embedded HTML (PHP from http://www.php.net)
Дополнительные интерфейсы доступны по адресу
http://www.postgresql.org/interfaces.html.
_________________________________________________________________ _________________________________________________________________
Вопросы администрирования Вопросы администрирования
@ -660,6 +665,22 @@
происходить, если backend процесс падает во время сортировки. Если у происходить, если backend процесс падает во время сортировки. Если у
вас не запущено ни одного backend процесса, то вы можете спокойно вас не запущено ни одного backend процесса, то вы можете спокойно
удалить файлы pg_tempNNN.NN. удалить файлы pg_tempNNN.NN.
3.10) Почему необходимо делать dump и restore при обновлении выпусков
PostgreSQL?
Разработчики PostgreSQL делают только небольшие изменения между
подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не
требует выполнения dump и restore. Однако при выходе очередного
выпуска часто меняется внутренний формат системных таблиц и файлов
данных. Эти изменения часто носят комплексный характер, так что нет
возможности обеспечить обратную совместимость файлов данных. Выполение
dump позволяет получить данные в общем формате, который затем может
быть загружен при использовании нового внутреннего формата.
В тех выпусках, где формат данных на диске не меняется, для проведения
обновления может быть использован сценарий pg_upgrade без
использования dump/restore. Комментарии к выпуску говорит когда можно
использовать pg_upgrade для этого выпуска.
_________________________________________________________________ _________________________________________________________________
Вопросы эксплуатации Вопросы эксплуатации
@ -707,8 +728,8 @@
Максимальный размер базы? неограничен (существуют базы на 60 G Максимальный размер базы? неограничен (существуют базы на 60 G
B) B)
Максимальный размер таблицы? 16 TB Максимальный размер таблицы? 16 TB
Максимальный размер записи? неограничен начиная с версии 7.1 Максимальный размер записи? 1.6 TB
Максимальный размер поля? 1 GB начиная с версии 7.1 Максимальный размер поля? 1 GB
Максимальное количество записей в таблице? неограничено Максимальное количество записей в таблице? неограничено
Максимальное количество колонок в таблице? 250-1600 в зависимости от тип Максимальное количество колонок в таблице? 250-1600 в зависимости от тип
а а
@ -759,6 +780,9 @@ B)
Индексы не требуют так много, но поскольку они создаются для большого Индексы не требуют так много, но поскольку они создаются для большого
количества данных, они также могут быть велики. количества данных, они также могут быть велики.
Значения NULL сохраняются в битах и поэтому они занимают очень мало
места.
4.7) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы 4.7) Как мне убедиться, что существуют нужные мне таблицы, индексы, базы
данных и пользователи? данных и пользователи?
@ -779,7 +803,7 @@ B)
используются только если таблица больше минимального размера и запрос используются только если таблица больше минимального размера и запрос
выбирает только маленький процент записей в таблице. Так устроено, выбирает только маленький процент записей в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании потому что доступ к диску с применением рандомизации при сканировании
индексов иногда медленнее, чем простое чтение таблицы или ее индексов может быть медленнее, чем простое чтение таблицы или ее
последовательное сканирование. последовательное сканирование.
Чтобы определить необходимость использования индекса для какой-либо Чтобы определить необходимость использования индекса для какой-либо
@ -796,13 +820,30 @@ B)
обычно быстрее, чем поиск по индексам в большой таблице. Однако, ORDER обычно быстрее, чем поиск по индексам в большой таблице. Однако, ORDER
BY часто комбинируется с LIMIT и в этом случае индекс будет BY часто комбинируется с LIMIT и в этом случае индекс будет
использоваться, поскольку при выполнении будет возвращаться небольшая использоваться, поскольку при выполнении будет возвращаться небольшая
часть таблицы. часть таблицы. Фактически MAX() и MIN() не используют индексы, но
индекс используется при построении запросов с ORDER BY и LIMIT:
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1
Когда используются операции с шаблонами, например LIKE или ~, индексы Когда используются операции с шаблонами, например LIKE или ~, индексы
могут быть использованы только если начало строки-шаблона для поиска, могут быть использованы в следующих случаях:
соответствует началу искомой строки. Следовательно, для того, чтобы * Начало строки поиска должно совпадать с началом искомой строки,
использовать индексы, шаблон в LIKE не должен начинаться на %, а в ~ т.е.:
(поиск регулярного выражения) должен начинаться на ^.
* LIKE шаблоны не должны начинаться с %.
*
* ~ шаблоны регулярных выражений должна начинаться на ^.
*
Строка поиска не должна начинаться с символа класса, т.е. [a-e].
Не должен использоваться поиск независимый от регистра такой как
ILIKE и ~. Вместо него используйте функциональные индексы, которые
описаны в этом FAQ ниже.
Во время initdb должна использоваться локаль по умолчанию C.
4.9) Как посмотреть на то, как оптимизатор выполняет мой запрос? 4.9) Как посмотреть на то, как оптимизатор выполняет мой запрос?
@ -845,8 +886,7 @@ B)
Оператор ~ производит поиск регулярного выражения, а оператор ~* Оператор ~ производит поиск регулярного выражения, а оператор ~*
производит независимый от регистра букв поиск регулярного выражения. производит независимый от регистра букв поиск регулярного выражения.
Независимый от регистра вариант LIKE называется ILIKE в PostgreSQL Независимый от регистра вариант LIKE называется ILIKE.
начиная с версии 7.1.
Независимое от регистра сравнение обычно выражается так: Независимое от регистра сравнение обычно выражается так:
SELECT * SELECT *
@ -1014,10 +1054,9 @@ BYTEA bytea
4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"? 4.18) Почему я получаю ошибку "ERROR: Memory exhausted in AllocSetAlloc()"?
Если у вас версия ниже 7.1, то обновление версии может решить эту Предположительно у вас закончилась виртуальная память или что ваше
проблему. Также возможно, что у вас закончилась виртуальная память или ядро имеет маленький лимит на определенные ресурсы. Попытайтесь перед
что ваше ядро имеет маленький лимит на определенные ресурсы. запуском postmaster выполнить следующие команды:
Попытайтесь перед запуском postmaster выполнить следующие команды:
ulimit -d 262144 ulimit -d 262144
limit datasize 256m limit datasize 256m
@ -1075,12 +1114,12 @@ SELECT *
4.23) Как мне выполнить внешнее связывание? 4.23) Как мне выполнить внешнее связывание?
PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание, PostgreSQL поддерживает внешнее связывание, используя стандартный
используя стандартный синтаксис SQL. Вот два примера: синтаксис SQL. Вот два примера:
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
or или
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);

View File

@ -14,7 +14,7 @@
alink="#0000ff"> alink="#0000ff">
<H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1> <H1>Ответы на часто задаваемые вопросы по PostgreSQL</H1>
<P>Дата последнего обновления: Четверг 11 Июня 06:36:10 EDT 2002</P> <P>Дата последнего обновления: Среда 22 Августа 19:20:40 EDT 2002</P>
<P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href= <P>Английский вариант сопровождает: Брюс Момьян (Bruce Momjian) (<A href=
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR> "mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
@ -82,6 +82,8 @@
clients"</I> когда пытаюсь подключиться к базе?<BR> clients"</I> когда пытаюсь подключиться к базе?<BR>
<A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I> <A href="#3.9">3.9</A>) Что это за файлы <I>pg_sorttempNNN.NN</I>
в моем каталоге с базой данных?<BR> в моем каталоге с базой данных?<BR>
<A href="#3.10">3.10</A>) Почему необходимо делать dump и restore при
обновлении выпусков PostgreSQL?<BR>
<H2 align="center">Вопросы эксплуатации</H2> <H2 align="center">Вопросы эксплуатации</H2>
@ -322,7 +324,7 @@
<H4><A name="1.7">1.7</A>) Какая последняя версия?</H4> <H4><A name="1.7">1.7</A>) Какая последняя версия?</H4>
<P>Последний выпуск PostgreSQL - это версия 7.2.</P> <P>Последний выпуск PostgreSQL - это версия 7.2.2.</P>
<P>Мы планируем выпускать новые версии каждые четыре месяца.</P> <P>Мы планируем выпускать новые версии каждые четыре месяца.</P>
@ -502,8 +504,8 @@
некоторое количество ежемесячных и одноразовых расходов, которые некоторое количество ежемесячных и одноразовых расходов, которые
требуют денег. Если вы или ваша компания имеет деньги, которые требуют денег. Если вы или ваша компания имеет деньги, которые
можно передать в помощь нашим усилиям, пожалуйста посетите страничку можно передать в помощь нашим усилиям, пожалуйста посетите страничку
<A href= <A href="https://store.pgsql.com/shopping/index.php?id=1">
"http://www.pgsql.com/pg_goodies">http://www.pgsql.com/pg_goodies</A> https://store.pgsql.com/shopping/index.php?id=1</A>
и сделайте свой вклад.</P> и сделайте свой вклад.</P>
<P>Хотя на страничке говорится о PostgreSQL, Inc, пункт <P>Хотя на страничке говорится о PostgreSQL, Inc, пункт
@ -594,6 +596,9 @@
<LI>Embedded <SMALL>HTML</SMALL> (<A href= <LI>Embedded <SMALL>HTML</SMALL> (<A href=
"http://www.php.net">PHP from http://www.php.net</A>)</LI> "http://www.php.net">PHP from http://www.php.net</A>)</LI>
</UL> </UL>
<P>Дополнительные интерфейсы доступны по адресу <A href="http://www.postgresql.org/interfaces.html">
http://www.postgresql.org/interfaces.html.</A>
</P>
<HR> <HR>
<H2 align="center">Вопросы администрирования</H2> <H2 align="center">Вопросы администрирования</H2>
@ -796,6 +801,25 @@
не происходить, если backend процесс падает во время сортировки. не происходить, если backend процесс падает во время сортировки.
Если у вас не запущено ни одного backend процесса, то вы можете Если у вас не запущено ни одного backend процесса, то вы можете
спокойно удалить файлы pg_tempNNN.NN.</P> спокойно удалить файлы pg_tempNNN.NN.</P>
<A name="3.10">3.10</A>) Почему необходимо делать dump и restore при
обновлении выпусков PostgreSQL?<BR>
<P>Разработчики PostgreSQL делают только небольшие изменения между
подвыпусками. Таким образом обновление с версии 7.2 до 7.2.1 не требует
выполнения dump и restore. Однако при выходе очередного выпуска часто
меняется внутренний формат системных таблиц и файлов данных. Эти
изменения часто носят комплексный характер, так что нет возможности
обеспечить обратную совместимость файлов данных. Выполение dump
позволяет получить данные в общем формате, который затем может быть
загружен при использовании нового внутреннего формата.</P>
<P>
В тех выпусках, где формат данных на диске не меняется, для проведения
обновления может быть использован сценарий <i>pg_upgrade</i> без
использования dump/restore. Комментарии к выпуску говорит когда можно
использовать <i>pg_upgrade</i> для этого выпуска.
</P>
<HR> <HR>
<H2 align="center">Вопросы эксплуатации</H2> <H2 align="center">Вопросы эксплуатации</H2>
@ -852,12 +876,13 @@
<PRE> <PRE>
Максимальный размер базы? неограничен (существуют базы на 60 GB) Максимальный размер базы? неограничен (существуют базы на 60 GB)
Максимальный размер таблицы? 16 TB Максимальный размер таблицы? 16 TB
Максимальный размер записи? неограничен начиная с версии 7.1 Максимальный размер записи? 1.6 TB
Максимальный размер поля? 1 GB начиная с версии 7.1 Максимальный размер поля? 1 GB
Максимальное количество записей в таблице? неограничено Максимальное количество записей в таблице? неограничено
Максимальное количество колонок в таблице? 250-1600 в зависимости от типа Максимальное количество колонок в таблице? 250-1600 в зависимости от типа
Максимальное количество индексов в таблице? неограничено Максимальное количество индексов в таблице? неограничено
</PRE> </PRE>
Разумеется, понятие "неограничено" на самом деле ограничивается Разумеется, понятие "неограничено" на самом деле ограничивается
доступным дисковым пространиством и размерами памяти/своппинга. доступным дисковым пространиством и размерами памяти/своппинга.
Когда значения перечисленные выше неоправдано большие, может Когда значения перечисленные выше неоправдано большие, может
@ -905,6 +930,10 @@
<P>Индексы не требуют так много, но поскольку они создаются для <P>Индексы не требуют так много, но поскольку они создаются для
большого количества данных, они также могут быть велики.</P> большого количества данных, они также могут быть велики.</P>
<P>Значения <small>NULL</small> сохраняются в битах и поэтому они
занимают очень мало места.
</P>
<H4><A name="4.7">4.7</A>) Как мне убедиться, что существуют нужные мне <H4><A name="4.7">4.7</A>) Как мне убедиться, что существуют нужные мне
таблицы, индексы, базы данных и пользователи?</H4> таблицы, индексы, базы данных и пользователи?</H4>
@ -926,7 +955,7 @@
используются только если таблица больше минимального размера и запрос используются только если таблица больше минимального размера и запрос
выбирает только маленький процент записей в таблице. Так устроено, выбирает только маленький процент записей в таблице. Так устроено,
потому что доступ к диску с применением рандомизации при сканировании потому что доступ к диску с применением рандомизации при сканировании
индексов иногда медленнее, чем простое чтение таблицы или ее индексов может быть медленнее, чем простое чтение таблицы или ее
последовательное сканирование.</P> последовательное сканирование.</P>
<P>Чтобы определить необходимость использования индекса для какой-либо <P>Чтобы определить необходимость использования индекса для какой-либо
@ -944,14 +973,32 @@
сортировкой обычно быстрее, чем поиск по индексам в большой таблице. сортировкой обычно быстрее, чем поиск по индексам в большой таблице.
Однако, <SMALL>ORDER BY</SMALL> часто комбинируется с <SMALL>LIMIT</SMALL> Однако, <SMALL>ORDER BY</SMALL> часто комбинируется с <SMALL>LIMIT</SMALL>
и в этом случае индекс будет использоваться, поскольку при выполнении и в этом случае индекс будет использоваться, поскольку при выполнении
будет возвращаться небольшая часть таблицы.</P> будет возвращаться небольшая часть таблицы. Фактически MAX() и MIN() не
используют индексы, но индекс используется при построении запросов с
<SMALL>ORDER BY</SMALL> и <SMALL>LIMIT</SMALL>:
<pre>
SELECT col
FROM tab
ORDER BY col [ DESC ]
LIMIT 1
</pre>
<P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL> <P>Когда используются операции с шаблонами, например <SMALL>LIKE</SMALL>
или <I>~</I>, индексы могут быть использованы только если начало или <I>~</I>, индексы могут быть использованы в следующих случаях:
строки-шаблона для поиска, соответствует началу искомой строки. </P><UL>
Следовательно, для того, чтобы использовать индексы, шаблон в <LI>Начало строки поиска должно совпадать с началом искомой строки, т.е.:</LI>
<SMALL>LIKE</SMALL> не должен начинаться на <I>%</I>, а в <I>~</I> <UL>
(поиск регулярного выражения) должен начинаться на <I>^</I>.</P> <LI><small>LIKE</small> шаблоны не должны начинаться с <i>%.</i><LI>
<LI><i>~</i> шаблоны регулярных выражений должна начинаться на <i>^.</i><LI>
</UL>
<LI>Строка поиска не должна начинаться с символа класса, т.е. [a-e].</LI>
<LI>Не должен использоваться поиск независимый от регистра такой как
<small>ILIKE</small> и <i>~</i>. Вместо него используйте функциональные
индексы, которые описаны в этом FAQ ниже.</LI>
<LI>Во время <i>initdb</i> должна использоваться локаль по умолчанию
<i>C</i>.
</UL>
<p>
<H4><A name="4.9">4.9</A>) Как посмотреть на то, как оптимизатор выполняет <H4><A name="4.9">4.9</A>) Как посмотреть на то, как оптимизатор выполняет
мой запрос?</H4> мой запрос?</H4>
@ -999,20 +1046,19 @@
<P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор <P>Оператор <I>~</I> производит поиск регулярного выражения, а оператор
<I>~*</I> производит независимый от регистра букв поиск регулярного <I>~*</I> производит независимый от регистра букв поиск регулярного
выражения. Независимый от регистра вариант <SMALL>LIKE</SMALL> называется выражения. Независимый от регистра вариант <SMALL>LIKE</SMALL> называется
<SMALL>ILIKE</SMALL> в PostgreSQL начиная с версии 7.1.</P> <SMALL>ILIKE</SMALL>.</P>
<P>Независимое от регистра сравнение обычно выражается так:</P> <P>Независимое от регистра сравнение обычно выражается так:</P>
<PRE> <PRE>
SELECT * SELECT *
FROM tab FROM tab
WHERE lower(col) = 'abc' WHERE lower(col) = 'abc'
</PRE> </PRE>
Эта конструкция не будет использовать стандартный индекс. Однако, если Эта конструкция не будет использовать стандартный индекс. Однако, если
вы создадите функциональный индекс, он будет использован: вы создадите функциональный индекс, он будет использован:
<PRE> <PRE>
CREATE INDEX tabindex on tab (lower(col)); CREATE INDEX tabindex on tab (lower(col));
</PRE> </PRE>
<H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля <H4><A name="4.13">4.13</A>) Как я могу определить, что значение поля
@ -1064,6 +1110,7 @@ BYTEA bytea
name TEXT name TEXT
); );
</PRE> </PRE>
автоматически транслируется в: автоматически транслируется в:
<PRE> <PRE>
CREATE SEQUENCE person_id_seq; CREATE SEQUENCE person_id_seq;
@ -1073,6 +1120,7 @@ BYTEA bytea
); );
CREATE UNIQUE INDEX person_id_key ON person ( id ); CREATE UNIQUE INDEX person_id_key ON person ( id );
</PRE> </PRE>
Смотрите подробности о последовательностях на странице руководства Смотрите подробности о последовательностях на странице руководства
посвященной <I>create_sequence</I>. Вы также можете использовать посвященной <I>create_sequence</I>. Вы также можете использовать
каждое поле <I>OID</I> в записи как уникальное значение. Однако, каждое поле <I>OID</I> в записи как уникальное значение. Однако,
@ -1093,6 +1141,7 @@ BYTEA bytea
new_id = output of "SELECT nextval('person_id_seq')" new_id = output of "SELECT nextval('person_id_seq')"
INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal'); INSERT INTO person (id, name) VALUES (new_id, 'Blaise Pascal');
</PRE> </PRE>
Затем вы должны также сохранить новое значение в переменной Затем вы должны также сохранить новое значение в переменной
<CODE>new_id</CODE> для его использования в других запросах (например <CODE>new_id</CODE> для его использования в других запросах (например
таких как внешний ключ для таблицы <CODE>person</CODE>). Заметим, таких как внешний ключ для таблицы <CODE>person</CODE>). Заметим,
@ -1108,6 +1157,7 @@ BYTEA bytea
INSERT INTO person (name) VALUES ('Blaise Pascal'); INSERT INTO person (name) VALUES ('Blaise Pascal');
new_id = output of "SELECT currval('person_id_seq')"; new_id = output of "SELECT currval('person_id_seq')";
</PRE> </PRE>
И наконец, вы можете использовать значение И наконец, вы можете использовать значение
<A href="#4.16"><SMALL>OID</SMALL></A>, возращаемое из опертора <A href="#4.16"><SMALL>OID</SMALL></A>, возращаемое из опертора
<SMALL>INSERT</SMALL> чтобы увидеть значение по умолчанию, что <SMALL>INSERT</SMALL> чтобы увидеть значение по умолчанию, что
@ -1213,8 +1263,7 @@ BYTEA bytea
<H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory <H4><A name="4.18">4.18</A>) Почему я получаю ошибку <I>"ERROR: Memory
exhausted in AllocSetAlloc()"</I>?</H4> exhausted in AllocSetAlloc()"</I>?</H4>
<P>Если у вас версия ниже 7.1, то обновление версии может решить эту <P>Предположительно у вас закончилась виртуальная память
проблему. Также возможно, что у вас закончилась виртуальная память
или что ваше ядро имеет маленький лимит на определенные ресурсы. или что ваше ядро имеет маленький лимит на определенные ресурсы.
Попытайтесь перед запуском <I>postmaster</I> выполнить следующие Попытайтесь перед запуском <I>postmaster</I> выполнить следующие
команды:</P> команды:</P>
@ -1222,6 +1271,7 @@ BYTEA bytea
ulimit -d 262144 ulimit -d 262144
limit datasize 256m limit datasize 256m
</PRE> </PRE>
В зависимости от командного интерпретатора shell, только одна из данных В зависимости от командного интерпретатора shell, только одна из данных
команд выполнится успешно, но она позволит вам установить больший команд выполнится успешно, но она позволит вам установить больший
сегмент данных процесса и возможно решит проблему. Эта команда сегмент данных процесса и возможно решит проблему. Эта команда
@ -1275,6 +1325,7 @@ BYTEA bytea
WHERE col1 IN (SELECT col2 FROM TAB2) WHERE col1 IN (SELECT col2 FROM TAB2)
</CODE> </CODE>
</PRE> </PRE>
на: на:
<PRE> <PRE>
<CODE>SELECT * <CODE>SELECT *
@ -1282,17 +1333,19 @@ BYTEA bytea
WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2) WHERE EXISTS (SELECT col2 FROM TAB2 WHERE col1 = col2)
</CODE> </CODE>
</PRE> </PRE>
Мы надеемся убрать это ограничение в будущем выпуске. Мы надеемся убрать это ограничение в будущем выпуске.
<H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4> <H4><A name="4.23">4.23</A>) Как мне выполнить внешнее связывание?</H4>
<P>PostgreSQL начиная с версии 7.1 поддерживает внешнее связывание, <P>PostgreSQL поддерживает внешнее связывание,
используя стандартный синтаксис SQL. Вот два примера:</P> используя стандартный синтаксис SQL. Вот два примера:</P>
<PRE> <PRE>
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col); FROM t1 LEFT OUTER JOIN t2 ON (t1.col = t2.col);
</PRE> </PRE>
or
или
<PRE> <PRE>
SELECT * SELECT *
FROM t1 LEFT OUTER JOIN t2 USING (col); FROM t1 LEFT OUTER JOIN t2 USING (col);