最近、私が作成しているアプリケーションで使用される新しい Postgres テーブルのセットを DB チームに提案する必要がありました。私のテーブルには次のようにリストされたフィールドがあったため、設計に失敗しました。
my_table
my_table_id : PRIMARY KEY, AUTO INCREMENT INT
some_other_table_id, FOREIGN KEY INT
some_text : CHARACTER VARYING(100)
some_flag : BOOLEAN
some_text
彼らは、 が の前に表示されるため、テーブルは最適ではないだろうと述べましたsome_flag
。また、CHARACTER VARYING
フィールドの検索はBOOLEAN
s よりも遅いため、テーブル スキャンを実行するときは、列が最大精度から最小精度に順序付けられたテーブル構造を使用する方が高速です。だから、このように:
my_table
my_table_id : PRIMARY KEY, AUTO INCREMENT INT
some_other_table_id, FOREIGN KEY INT
some_flag : BOOLEAN
some_text : CHARACTER VARYING(100)
これらの DBA は Sybase のバックグラウンドを持っており、ごく最近 Postgres DBA に切り替えました。これはおそらく、Postgres には適用されない Sybase の最適化であると考えています (Postgres は、列の順序をどうにか気にしないほど賢いと思います)。
いずれにせよ、肯定または否定する Postgres のドキュメントが見つかりません。これが有効な主張なのか偽物なのか (または条件付きで有効なのか!) について検討するために、戦いに慣れた Postgres DBA を探してください。