2017-10-04 141 views

回答

1

那麼爲什麼不使用nvarchar(2)來確保只有2個字符被寫入?這是一個約束,確保數據符合預期。

此外,如果您知道值將只有ASCII然後使用varchar而不是nvarchar

最後,長度約束不會對IN條款有何影響假定,如果大小總是2的所有值不能超過2.

+0

我應該指定。我對錶現最好奇。例如,有一個太長的字段會影響where子句中的速度嗎? –

+0

@PatrickSchomburg - 重要的是該領域的價值。字段長度爲2000並存儲2個字符將不會影響'where'子句。會有什麼影響是記錄的數量,你如何比較和索引(如果他們在那裏,他們是如何構造的,他們是零散的)。唯一真正的例外是長度'max',因爲這些值可能會跨越頁面到一個overlfow,在這種情況下,我不確定任何索引如何工作,但這隻影響也超過4000的值(我相信)。 – Igor

+0

在這種情況下,使用null與空字符串值是否有優勢/劣勢? –

1

長度我會用nchar(2)對Unicode或char(2)非Unicode的或null

使用超大的可變寬度列會影響內存授予和行大小估計,因爲SQL Server會假定每行保存的值是聲明列大小的一半;雖然這可能不是一個寬度爲50的重要因素,但它在較大的尺寸上會產生更明顯的差異。

參考: