Thread: Re: аналог mysql'ного SQL_CALC_FOUND_ROWS
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 какой-то аналогичный механизм? Есть ли в этом какой-то смысл? Любая библиотека предоставляет эту информацию после выполнения запроса.
>> в 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
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> Любая библиотека предоставляет эту информацию после выполнения запроса. > а можно подробнее? Не, не то. Таких чудес нету нигде. Я думал, требуется количество записей, возвращённых запросом.
>> 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
Можно использовать windowing функцию count(*) over(). Подробнее см. http://www.postgresql.org/docs/current/static/tutorial-window.html regards, S.Vladykin
Re: [pgsql-ru-general] Re: [pgsql-ru-general] аналог mysql'ного SQL_CALC_FOUND_ROWS
From
Jouriy LYSENKO
Date:
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