簡體   English   中英

SQL Server / ASP.NET MVC 4中PK int的大小

[英]Size of a PK int in SQL Server / ASP.NET MVC 4

當前,我的主鍵數據類型是int, not null ,並在應用程序中定義如下:

public virtual int Id { get; set; } 

不過,我有點擔心,由於int受到限制,在某些時候,由於主鍵的大小,將無法添加新行。

應該如何解決這個問題? 我在考慮a)只是將數據類型更改為long等,或者b)如果可能,請刪除主鍵,因為在應用程序中任何時候都不使用它?

不要刪除您的主鍵,您需要它來標識數據庫中的記錄。 如果您希望擁有比int可以處理的更多功能,則可以:

  • 使其bigint
  • 使其成為唯一標識符
  • 使其成為復合鍵(由兩個或多個字段組成)

除非您要處理非常小的表(10行),否則永遠不要沒有主鍵。 主鍵會提供初始的唯一索引和聚簇索引,因此會極大地影響性能。 唯一索引在維護數據完整性方面起着至關重要的作用。 聚集索引在允許SQL Server執行索引和行查找而不是掃描方面起着至關重要的作用。 基本上,它必須加載一行還是全部行。

更改數據類型將影響您的主索引大小,行大小以及放置在表上的任何索引的大小。 除非您擔心在不久的將來會超過2,147,483,647行,否則我將堅持使用INT。 每種數據類型的行數都有限制。

您是否真的認為會獲得超過2,147,483,647行? 我對此表示懷疑。 我不會擔心。

如果您在某個時候開始達到極限,那么將其更改為bigint應該很簡單。

這取決於您期望該表的大小- 請查看SQL Server的參考頁以了解受支持的范圍,然后您可以回答有關需要自己更改PK數據類型的問題。

如果確實從未使用過該密鑰(甚至不用作外鍵),則完全將其剔除。

您應該始終有一個主鍵,因此我不會刪除它。 但是,您是否真的認為您將要超出表中2,147,483,647行的限制?

如果確實有問題,可以將dataType更改為bigint

這也是SQL Server可以處理的限制表 -可以幫助您解決需要計划的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM