簡體   English   中英

添加主鍵並將列更改為DatetTime2

[英]Adding a Primary Key and Altering a Column to DatetTime2

我有一個表來跟蹤特定文件在我們的系統檢查時經歷的狀態。 它看起來像這樣:
FileID int
狀態tinyint
TouchedBy varchar(50)
觸動當日期時間

此表上當前沒有主鍵,但Status和TouchedWhen上有聚集索引

隨着表的不斷增長和查詢性能的下降,人們認為我已經有了添加一個PrimaryKey以便我從堆查找 - FileID上的主鍵,Status和TouchedWhen

我遇到的問題是TouchedWhen,由於它的四舍五入問題,有時會有2個具有完全相同日期時間的條目。

那么我開始研究將它轉換為datetime2(7)所需的內容並改變當時重復的內容。 我的桌子看起來像:
FileID int
狀態tinyint
TouchedBy varchar(50)
觸摸時datetime2(7)

以及FileID,Status和TouchedWhen上的主鍵

我的問題是 - 如果有重復的話,最好的方法是在現有表中添加毫秒? 如何對需要保持在線狀態的表格執行此操作?

提前,謝謝,
黑雁

您不需要添加主鍵來更快地進行查詢 - 只需在FileID, Status, TouchedWhen上添加索引FileID, Status, TouchedWhen將與添加主鍵一樣具有性能影響。 定義主鍵的主要好處是記錄標識和參照完整性,這可以通過自動增量主鍵來完成。

(我不是說你不應該有一個主鍵,我說主鍵的性能影響在索引本身,而不是它是主鍵的事實)

另一方面,將聚簇索引更改為包含FileID可能會產生更大的影響,因為使用這些列的查找不需要搜索索引然后查找數據 - 數據頁將與索引值一致。

暫無
暫無

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

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