Để có một ước tính rất nhanh:
SELECT reltuples FROM pg_class WHERE relname = 'my_table';
Tuy nhiên, có một số lưu ý. Đối với một, relname
không nhất thiết phải là duy nhất trong pg_class
. Có thể có nhiều bảng có cùng một relname
trong nhiều lược đồ của cơ sở dữ liệu. Rõ ràng:
SELECT reltuples::bigint FROM pg_class WHERE oid = 'my_schema.my_table'::regclass;
Nếu bạn không đủ điều kiện lược đồ cho tên bảng, một truyền đến regclass
quan sát search_path
hiện tại để chọn kết hợp tốt nhất. Và nếu bảng không tồn tại (hoặc không thể nhìn thấy) trong bất kỳ lược đồ nào trong search_path
bạn nhận được một thông báo lỗi. Xem Các loại mã nhận dạng đối tượng trong sách hướng dẫn.
Truyền tới bigint
định dạng real
số độc đáo, đặc biệt đối với số lượng lớn.
Ngoài ra, reltuples
có thể ít nhiều đã lỗi thời. Có nhiều cách để bù đắp điều này ở một mức độ nào đó. Xem câu trả lời sau này với các tùy chọn mới và cải tiến:
- Cách nhanh chóng để khám phá số hàng của một bảng trong PostgreSQL
Và một truy vấn trên pg_stat_user_tables
chậm hơn nhiều lần (mặc dù vẫn nhanh hơn nhiều so với đếm đầy đủ), vì đó là chế độ xem trên một vài bảng.