On Thu, May 26, 2005 at 11:49:34AM +0300, Denis A. Egorov wrote:
> Вот версия postgresql:
>
> PostgreSQL 7.4.8 on i386-portbld-freebsd4.10, compiled by GCC 2.95.4
>
> Это о входящих данных:
>
> head -c 100 big.sql
> SELECT id FROM test WHERE id NOT IN ( '10', '100', '1000', '10000', '10001', '10002
>
> wc sql_big.sql
> 1 14091 122660 sql_big.sql
У тебя в WHERE только NOT IN или ещё что-то?
Postgres иногда не очень умно делает эквивалентные преобразования
булевых выражений, в определённых случаях в результате они получаются
просто конскими.
Как решение могу посоветовать создание временной таблицы (скажем,
denied), куда сложить нужные id'ы и заменить твой NOT IN на
NOT IN (SELECT id FROM test) или на NOT EXISTS (SELECT 1 FROM denied d
WHERE d.id = test.id);
--
Fduch M. Pravking