2010-10-21 43 views
10

'daki FOUND_ROWS() işlevi eşdeğeri Uygulamamda bir mesaj gönderiyorum, PostgreSQL'in standart OFFSET ve LIMIT anahtar sözcüklerini kullanarak bir kerede veritabanından 20 satır döndürüyor. Biz de kullanıcıya kayıtların toplam sayısını göstermek uygulamanın bir gereğidirPostgresql

SELECT stuff FROM table WHERE condition ORDER BY stuff OFFSET 0 LIMIT 20 

: Örneğin, 1. sayfada sayfayı almak.

SELECT COUNT(*) FROM table WHERE condition 

Ama satır çok sayıda varsa o zaman bu optimal bir çözüm değildir: Yani, belli ki, ben ayrı bir sorgu yayımlayarak toplam alabilirsiniz.

http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function%5Ffound-rows

PostgreSQL eşdeğer bir var mı: Ben MySQL tam aradığım yok neyi FOUND_ROWS (denilen çok yararlı bir işlev) olduğunu fark?

cevap

24

bak.

SELECT stuff, 
     count(*) OVER() AS total_count 
FROM table 
WHERE condition 
ORDER BY stuff OFFSET 40 LIMIT 20 
: Yukarıdaki örnek dayanarak