我有一堆我正在迭代的表,其中一些没有行(即只有一个没有数据的标题表)。
例如:SELECT my_column FROM my_schema.my_table LIMIT 1
返回一个空结果集。
检查表是否是没有行的表之一的绝对最快方法是什么?
我考虑过:SELECT my_column FROM my_schema.my_table LIMIT 1
或SELECT * FROM my_schema.my_table LIMIT 1
接着是if result is None
(我在Python工作)。有没有更快的方法来检查?
答案 0 :(得分:2)
select exists (select * from myTab);
或
select 1 where exists (select * from myTab)
甚至
SELECT reltuples FROM pg_class WHERE oid = 'schema_name.table_name'::regclass;
第3个示例使用估算器估算行数,这些行可能不是100%准确,但可能会稍快一点。
答案 1 :(得分:2)
这不比你的解决方案快,但返回一个布尔无重复:
select exists (select 1 from mytable)
答案 2 :(得分:-3)
SELECT COUNT(*) FROM table_name limit 1;
试试这段代码。