2017-04-18 39 views
1

我有一堆我正在迭代的表,有些表沒有行(即只有一個沒有數據的表頭)。 ex:SELECT my_column FROM my_schema.my_table LIMIT 1返回一個空的結果集。什麼是最快的方式來查看一個表是否在postgreSQL中沒有行?

什麼是絕對最快的方式來檢查表是否是沒有行的這些表之一?

我考慮過:SELECT my_column FROM my_schema.my_table LIMIT 1SELECT * FROM my_schema.my_table LIMIT 1 後面跟着if result is None(我正在Python中工作)。有沒有更快的方法檢查?

回答

1
select exists (select * from myTab); 

select 1 where exists (select * from myTab) 

甚至

SELECT reltuples FROM pg_class WHERE oid = 'schema_name.table_name'::regclass; 

的第三示例使用估計器來估計的行,這可能不是100%精確的,但可以是一個稍微有點快。

-3
SELECT COUNT(*) FROM table_name limit 1; 

試試這個代碼。

+0

取決於數據庫,如果表*不*空,可能是非常昂貴的。 – chepner

+0

編輯應該現在好。 – CanyoucSharp

+2

不,它不是。你將結果行限制爲1,但它只有一行。 (在COUNT之後執行LIMIT)。 –

2

這不是比你的解決方案更快,但返回boolean regadless:

select exists (select 1 from mytable) 
相關問題