2012-10-24 20 views
1

我被給了一個ragtag分類的數據分析和運行到一個困境。我有一個約200萬行表,其中包含數據類型爲varchar(50)的非唯一標識符。該標識符對於personID是唯一的。直到我弄清楚我需要如何規範這個垃圾,我還有另一個問題可以幫助我:如果我將數據類型更改爲varchar(25)例如,這會幫助查詢在非聯接時運行得更快-PK字段?字符串中的所有字符都是整數,但試圖將它們轉換爲int會導致溢出。或者,我是否可能以某種方式將列索引爲暫時讓一些查詢運行得更快?加入非PK字段,varchar數據類型的長度決定查詢速度嗎? SQL Server 2008

編輯:personID將成爲另一張表的外鍵,其中包含關於某人的人口統計信息。

回答

2

從技術上講,varchar的長度指定它的最大長度。

實際長度是可變的(因此名稱),所以較低的最大值不會改變評估,因爲它將在實際的字符串上進行。

欲瞭解更多信息:

Check this MSDN articleStack overflow Post

+0

我認爲通過其餘的不需要的,分配的空間可以放慢查詢速度。 – wootscootinboogie

+1

sql server不保留varchar(x)的空間,只能是char(x)。 –

0

Varchar(50)varchar(25)肯定會減少該表中的記錄大小,從而減少包含該表的數據庫頁面的數量,提高查詢的性能(可能會達到一定程度),但是這樣的ALTER TABLE語句可能需要很長時間。另外,如果您在連接列上定義索引,並且檢索列表很小,那麼也可以在索引定義(Covering index)中包括這些列,這樣也會顯着降低查詢執行時間。

+0

我從來沒有聽說過一個覆蓋索引的,我將不得不考慮這一點。 – wootscootinboogie

相關問題