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

Postgresqlで列タイプのサイズを計算する

    pgのいくつかのタイプだけが固定長を持っています-ほとんどすべてのタイプはvarlenaタイプです-それは動的な長さを持っています。

    のようなクエリを確認できます
     postgres=# select typlen from pg_type where oid = 'int'::regtype::oid;
      typlen 
     --------
           4
     (1 row)
    
    
     postgres=# select attlen from pg_attribute where attrelid = 'x'::regclass and attname = 'a';
      attlen 
     --------
           4
     (1 row)
    

    結果が-1でない場合、タイプの長さは固定されていません

    varlenaタイプの場合は、pg_column_size関数を使用します:

    postgres=# \df *size*
                                       List of functions
       Schema   |          Name          | Result data type | Argument data types |  Type  
    ------------+------------------------+------------------+---------------------+--------
     pg_catalog | pg_column_size         | integer          | "any"               | normal
     pg_catalog | pg_database_size       | bigint           | name                | normal
     pg_catalog | pg_database_size       | bigint           | oid                 | normal
     pg_catalog | pg_indexes_size        | bigint           | regclass            | normal
     pg_catalog | pg_relation_size       | bigint           | regclass            | normal
     pg_catalog | pg_relation_size       | bigint           | regclass, text      | normal
     pg_catalog | pg_size_pretty         | text             | bigint              | normal
     pg_catalog | pg_size_pretty         | text             | numeric             | normal
     pg_catalog | pg_table_size          | bigint           | regclass            | normal
     pg_catalog | pg_tablespace_size     | bigint           | name                | normal
     pg_catalog | pg_tablespace_size     | bigint           | oid                 | normal
     pg_catalog | pg_total_relation_size | bigint           | regclass            | normal
    (12 rows)
    
    
    
     postgres=# select pg_column_size('Hello');
      pg_column_size 
     ----------------
              6
     (1 row)
    
     postgres=# select pg_column_size(10);
      pg_column_size 
     ----------------
                   4
     (1 row)
    
     postgres=# select pg_column_size(now());
      pg_column_size 
     ----------------
                   8
    



    1. 巨大なテーブルの列タイプを変更する

    2. system.out.printlnの出力はoraclejavaクラスのどこにありますか

    3. postgresql日時変換に対するJsonの応答Javapostgresql

    4. mysql2 gemを使用してプリペアドステートメントをどのように作成しますか?