Thread: Re: аналог mysql'ного SQL_CALC_FOUND_ROWS

Re: аналог mysql'ного SQL_CALC_FOUND_ROWS

From
"Andrey N. Oktyabrski"
Date:
On 03/20/11 10:48, Dmitry E. Oboukhov wrote:
> в MySQL есть такая штука:
>
> SELECT
>      SQL_CALC_FOUND_ROWS
>      *
> FROM
>      table
> WHERE
>      somewhere
> LIMIT
>      10
>
> если указать флаг SQL_CALC_FOUND_ROWS, то при выполнении запроса
> выполнится так же подсчет количества записей в таблице вообще,
> соответствующих условию somewhere. которое можно будет потом
> использовать для вычисления числа страниц в пейджере итп
Я думаю, это псевдоним count(*) :-)

> есть ли в Pg какой-то аналогичный механизм?
Есть ли в этом какой-то смысл?
Любая библиотека предоставляет эту информацию после выполнения запроса.

Re: аналог mysql'ного SQL_CALC_FOUND_ROWS

From
"Dmitry E. Oboukhov"
Date:
>> в MySQL есть такая штука:
>>
>> SELECT
>>     SQL_CALC_FOUND_ROWS
>>     *
>> FROM
>>     table
>> WHERE
>>     somewhere
>> LIMIT
>>     10
>>
>> если указать флаг SQL_CALC_FOUND_ROWS, то при выполнении запроса
>> выполнится так же подсчет количества записей в таблице вообще,
>> соответствующих условию somewhere. которое можно будет потом
>> использовать для вычисления числа страниц в пейджере итп
ANO> Я думаю, это псевдоним count(*) :-)

нет.

SELECT ... LIMIT 10 если нет ORDER BY в общем случае выбирает первые
10 элемнтов удовлетворяющих условию somewhere.

а чтобы получить количество всех элементов, надо просмотреть всю
таблицу без лимита.

то есть указанный запрос есть алиас двух запросов:

SELECT * FROM table WHERE somewhere LIMIT 10
SELECT COUNT(*) FROM table WHERE somewhere

только выполняются они в один проход

>> есть ли в Pg какой-то аналогичный механизм?
ANO> Есть ли в этом какой-то смысл?

ну если мы какую-то таблицу показываем пользователю в виде разбиения
на страницы, то смысл прямой: надо ему показывать и сколько страниц
есть и содержимое конкретной страницы

ANO> Любая библиотека предоставляет эту информацию после выполнения запроса.

а можно подробнее?
--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

Re: аналог mysql'ного SQL_CALC_FOUND_ROWS

From
"Andrey N. Oktyabrski"
Date:
On 03/20/11 13:29, Dmitry E. Oboukhov wrote:
> то есть указанный запрос есть алиас двух запросов:
>
> SELECT * FROM table WHERE somewhere LIMIT 10
> SELECT COUNT(*) FROM table WHERE somewhere
>
> только выполняются они в один проход
В один проход - где-то так:
SELECT
   (SELECT COUNT(*) FROM table WHERE somewhere) AS c, *
FROM table WHERE somewhere LIMIT 10

> ANO>  Любая библиотека предоставляет эту информацию после выполнения запроса.
> а можно подробнее?
Не, не то. Таких чудес нету нигде. Я думал, требуется количество
записей, возвращённых запросом.

Re: аналог mysql'ного SQL_CALC_FOUND_ROWS

From
"Dmitry E. Oboukhov"
Date:
>> SELECT * FROM table WHERE somewhere LIMIT 10
>> SELECT COUNT(*) FROM table WHERE somewhere
>>
>> только выполняются они в один проход
ANO> В один проход - где-то так:
ANO> SELECT
ANO> (SELECT COUNT(*) FROM table WHERE somewhere) AS c, *
ANO> FROM table WHERE somewhere LIMIT 10

это в 10 проходов может получиться. то есть 10 селектов на каждую
строку выбранную во внешнем запросе.

понятно что оптимизатор и все такое...

--

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: unera@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment

Re: [pgsql-ru-general] аналог mysql'ного SQL_CALC_FOUND_ROWS

From
Sergi Vladykin
Date:
Можно использовать windowing функцию count(*) over(). Подробнее см.
http://www.postgresql.org/docs/current/static/tutorial-window.html

regards,
S.Vladykin

Postgres

pg_numrows($result) Works exactly the same as its MySQL counterpart

2011/3/20 Sergi Vladykin <sergi.vladykin@gmail.com>
Можно использовать windowing функцию count(*) over(). Подробнее см.
http://www.postgresql.org/docs/current/static/tutorial-window.html

regards,
S.Vladykin

--
Sent via pgsql-ru-general mailing list (pgsql-ru-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-ru-general



--
Youri LYSENKO
•••••••••••••••••••••
Portable : +33671383176
Fax : +33826761768
Émail : j.lysenko@gmail.com