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

主キーの SQL Server BIGINT または DECIMAL(18,0)

    bigint でこの範囲を取得します:

    -2^63 to 2^63-1 
    
    also known as roughly:
    
    -9.2 x 10^18 to 9.2 x 10^18
    

    この範囲は decimal(18,0) で取得します :

    -10^18 to 10^18
    

    10 進数:精度あたりのストレージ バイト数

    Precision    Storage Bytes
    1-9:         5
    10-19:       9
    20-28:       13
    29-38:       17
    

    整数型とストレージ バイト

    integer type    Storage Bytes
    bigint          8
    int             4
    smallint        2
    tinyint         1
    

    感想

    質問に投稿された 2 つの例は、実際には実質的に同じ量の一意の値を生成します。

    また、どのような選択をしてもパフォーマンスが大幅に変化することはありませんが、プログラマーが整数を期待している場所で小数を使用し始めると、チームの他のプログラマーの効率が変化することがわかります。これは些細な点です。

    特定の問題に対処するには、より広い範囲が必要な場合は、Decimal(38,0) を使用します。これにより以下が得られます:

    -10^38 to 10^38
    

    速度が気になる場合は、ソフトウェアの寿命が続く最小限の精度を使用してください。

    時間をナノ秒単位で測定していない場合は、プログラマーの考え方と、非常に長い数値セットを使用したいという希望に最も適したオプションを選択してください。

    参考文献



    1. PDO fetch()は失敗時に例外をスローしますか?

    2. Rails5.2Postgresql上のUUIDを使用したActiveStorage

    3. Oracle のストアド プロシージャのデフォルト値

    4. mysqlへのリモート接続