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

数値 (38,0) を主キー列として。良い、悪い、誰が気にしますか?

    さて、あなたは 決して到達することのない数値を保存するために、より多くのデータを消費します。

    bigint は 8 バイトで 9,223,372,036,854,775,807 になります

    int は 4 バイトで最大 2,147,483,647 になります

    正しい計算をしていれば、NUMERIC(38,0) は 17 バイトかかります。

    大きな違いではありませんが、データ型が小さい =メモリ内の行数が多い (または行数が同じ場合のページ数が少ない) =ルックアップ (インデックスまたはデータ ページのシーク) を行うためのディスク I/O が少なくなります。レプリケーション、ログ ページなどについても同様です。

    SQL Server の場合:INT は IEEE 標準であるため、CPU で比較しやすいため、INT と NUMERIC (パック 10 進形式) を使用すると、パフォーマンスがわずかに向上します。 (Oracle では、現在のバージョンが私が育った古いバージョンと一致する場合、すべてのデータ型がパックされているため、内部の INT は NUMERIC( x,0 ) とほとんど同じであるため、パフォーマンスの違いはありません)

    したがって、大まかに言えば、大量のディスク、RAM、および予備の I/O がある場合は、必要なデータ型を使用してください。もう少しパフォーマンスを上げたい場合は、もう少し保守的にしてください。

    そうでなければ、この時点でそのままにしておきます。変更する必要はありません。



    1. DropwizardとJDBIを使用して、複数のスキーマでデータベースにクエリを実行しますか?

    2. mySQL getTOP100スコアクエリは私を夢中にさせています

    3. SQL Server 2008でテーブルの制約をチェックするようにするには、特定の文字のみを許可しますか?

    4. SQL Server:アセンブリ用のすべての CLR 関数/プロシージャ/オブジェクトを一覧表示する方法