sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLが適切にフォーマットされたSQL定義を変更しないようにする方法

    それは誤解です。 Postgresは「フォーマットを変更」しません。元のSQL文字列はまったく保存されません。

    クエリは解析および書き換えられ、クエリの種類に応じてアクションが実行されます。 たとえばビューを作成するとき 、結果はシステムカタログに保存されます。ほとんどの場合、 pg_class および pg_rewrite

    また、現在の search_path および可視性を考慮に入れます(早期拘束)。同じクエリ文字列は、環境が何らかの形で変化した場合、後で何か違うことを意味する可能性があります。

    後で表示されるのは、再設計された これらのエントリから構築されたバージョン。いくつかの組み込み関数 それを支援するために、しかし、リバースエンジニアリングされたSQLコードをフォーマットする方法は主にクライアント次第です。

    機能 例外です(部分的に)。関数本体は文字列として渡され、そのまま保存されます。 、渡されたとおりで、(現在)オブジェクトの表面的な構文テストと検証のみが行われます。 Postgres内のフォーマットを含むクエリをすばやく「保存」する方法が必要な場合は、たとえばPL/pgSQL関数を使用できます。

    一般的なアプローチは、@Mikeがすでに提案している のような独立したコードリポジトリを持つことです。 -またはフォーマットをあまり気にしないでください。



    1. 10以上の結合でクエリを最適化する方法は?

    2. 同一のクエリの複数のプラン

    3. データベースのフィールドを自動的に更新する

    4. アプリケーションまたはデータベースのタイムスタンプ列を更新しますか?