50

Postgresql でクエリできる列の最大数を知っていますか? プロジェクトを開始する前に、これを知る必要があります。

4

3 に答える 3

59

PostgreSQL Limitsによると、「列の種類に応じて 250 ~ 1600」です。表の下の注を参照してください。PostgreSQL では行の幅が最大で 8kb (1 ページ) であり、複数のページにまたがることができないため、列の型が影響します。TOAST がそれを処理するため、列の大きな値は問題ありませんが、使用できる TOAST されていないデータ型の幅に応じて、収まる列の数に制限があります。

(厳密には、これはディスク上の行に格納できる列を指します。クエリでは、これよりも広い列セットを使用できる場合があります。これに依存することはお勧めしません。)

列の制限に近づくことを考えている場合でも、問題が発生する可能性があります。

スプレッドシートをリレーショナル データベースにマッピングするのは、世界で最も簡単なことのように思えます。列を列に、行を行にマッピングして実行します。右?実際には、スプレッドシートは巨大な自由形式のモンスターであり、構造を強制せず、非常に扱いにくい場合があります。リレーショナル データベースは、より多くの行を処理するように設計されてますが、コストがかかります。PostgreSQL の場合、そのコストの一部は、それらの行の幅の制限です。Joe User によって作成されたスプレッドシートに直面すると、これは実際の問題になる可能性があります。

1 つの "解決策" は、それらをEAVに分解することですが、それは言葉では言い表せないほど遅く、扱いにくいものです。より良い解決策は、可能であれば配列、複合型、hstore、json、xml などを使用することです。

ただし、最終的には、スプレッドシートを使用してスプレッドシートを分析することが最善の答えになる場合もあります。

于 2012-09-27T00:08:27.587 に答える
9

この情報が役立つと思われる他の人にとって、この投稿 http://archives.postgresql.org/pgsql-admin/2008-05/msg00208.phpに従った列のタイプに応じて、答えは 1663 です。

于 2012-09-26T17:54:28.633 に答える