Sql Server 參考:char與varchar的選擇(經驗之談)

來源:互聯網
上載者:User
char(或是nchar)與varchar(或是nvarchar)是資料庫中最常見的用於儲存字元資料的資料類型,由於它們大多數特性相同,因此在選擇使用哪種類型字元資料時,

可能會有一些疑惑。不過,通過一些比較和測試,還是可以較為容易地根據實際的需要來選擇它們。

      1. char與varchar的比較

      下面是使用char與varcahr的一些結果。

      (1)資料存放區開銷。

       a. 每個varchar列需要額外的兩個位元組,用於反映儲存的資料的長度。

       b. 每個可為NULL的char列,需要一些位元組(空位元影像)來反應資料的為空白性。

       c. 無論實際資料的長度是多少,char按照定義的長度分配儲存空間。

       d. varchar根據實際儲存的資料長度來分配資料存放區空間。

       (2) NULL值。

       a. char列的NULL值佔用儲存空間。

       b. varcahr列的NULL值不佔用儲存空間。

       c. 插入同樣數量的NULL值,varchar列的插入效率明顯高出char列。

       (3) 插入資料。無論插入資料涉及的列是否建立索引,char的效率都明顯低於varchar。

       (4) 更新資料

        如果更新的列上未建立索引,則char的效率低於varchar,差異不大;建立索引的話,效率差異較大。

       (5) 修改結構

        a. 無論增加或是刪除的列的類型是char還是varchar,操作都能較快的完成,而且效率上沒有什麼差異。

        b. 對於增加列的寬度而言,char與varchar有非常明顯的效率差異,修改varcahr列基本上不花費時間,而修改char列需要花費很長的時間。

       (6) 資料檢索。無論是否通過索引,varchar類型的資料檢索略優於char的掃描。

        2. 選擇char還是選擇varchar的建議

        (1) 適宜於char的情況:

        a. 列中的各行資料長度基本一致,長度變化不超過50位元組;

        b. 資料變更頻繁,資料檢索的需求較少。

        c. 列的長度不會變化,修改char類型列的寬度的代價比較大。

        d. 列中不會出現大量的NULL值。

        e. 列上不需要建立過多的索引,過多的索引對char列的資料變更影響較大。

        (2) 適宜於archar的情況;

        a. 列中的各行資料的長度差異比較大。

        b. 列中資料的更新非常少,但查詢非常頻繁。

        c. 列中經常沒有資料,為NULL值或為空白值。

        
  轉自:http://www.cnblogs.com/Dlonghow/archive/2009/07/18/1526314.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.