1

私は反復処理中のテーブルをたくさん持っていますが、その中には行がありません(つまり、データのないヘッダーのテーブルのみ)。 例:SELECT my_column FROM my_schema.my_table LIMIT 1は空の結果セットを返します。テーブルにpostgreSQLの行がないかどうかを調べる最速の方法は何ですか?

テーブルが行のないこれらのテーブルの1つであることを確認する最速の方法は何ですか?

私は、SELECT my_column FROM my_schema.my_table LIMIT 1またはSELECT * 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; 

3の例では、100%正確ではないかもしれないが、少しビット高速であってもよい、行を推定する推定器を使用します。

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

このコードを試してください。

+0

を、テーブルが*空でない場合、それは非常に高価である可能性があります。 – chepner

+0

は今すぐ良くなるはずです。 – CanyoucSharp

+2

いいえ、そうではありません。あなたは結果の行を1つに制限しますが、とにかく1つの行だけです。 (LIMITはCOUNTの後に実行されます)。 –

2

これはあなたのソリューションよりも高速ではなく、ブールregadless返す:データベースによっては

select exists (select 1 from mytable) 
関連する問題