當前位置:編程學習大全網 - 源碼破解 - SQL數據類型!

SQL數據類型!

SQL字符類型介紹

壹,名詞定義

char為 定長字符型,如char(10),妳實際數據是‘hello’,這時Sql Server 會自動補充空格,填滿10位。varchar:可變長字符,沒有上述問題,是多長就保存多長的數據。另外, char 和 varchar 在存儲數據時,每個英文字符和數字都占壹個字節,而壹個中文的字符會占兩個字節.

nchar 與 nvarchar 的用法基本相同,只不過在存儲數據時采用的是 Unicode元碼, 壹個英文字符和壹個中文字符所占的空間是相同的.都是兩個字節.

二、名詞解釋

1、當使用非unicode時慎用以下這種查詢:

select f from t where f = N’xx’

原因:無法利用到索引,因為數據庫會將f先轉換到unicode再和N’xx’比較

2、char 和相同長度的varchar處理速度差不多(後面還有說明)

3、varchar的長度不會影響處理速度(看後面解釋)

4、索引中列總長度最多支持總為900字節,所以長度大於900的varchar、char和大於450的nvarchar,nchar將無法創建索引

5、text、ntext上是無法創建索引的

6、O/R Mapping中對應實體的屬性類型壹般是以string居多,用char[]的非常少,所以如果按mapping的合理性來說,可變長度的類型更加吻合

7、壹般基礎資料表中的name在實際查詢中基本上全部是使用like ‘%xx%’這種方式,而這種方式是無法利用索引的,所以如果對於此種字段,索引建了也白建

8、其它壹些像remark的字段則是根本不需要查詢的,所以不需要索引

9、varchar的存放和string是壹樣原理的,即length {block}這種方式,所以varchar的長度和它實際占用空間是無關的

10、對於固定長度的字段,是需要額外空間來存放NULL標識的,所以如果壹個char字段中出現非常多的NULL,那麽很不幸,妳的占用空間比沒有NULL的大,這時候,妳可以使用特殊標識來存放,如:’NV’

11、同上,所以對於這種NULL查詢,索引是無法生效的,假如妳使用了NULL標識替代的話,那麽恭喜妳,妳可以利用到索引了

12、char和varchar的比較成本是壹樣的,現在關鍵就看它們的索引查找的成本了,因為查找策略都壹樣,因此應該比較誰占用空間小。在存放相同數量的字符情況下,如果數量小,那麽char占用長度是小於varchar的,但如果數量稍大,則varchar完全可能小於char,而且要看實際填充數值的充實度,比如說varchar(3)和char(3),那麽理論上應該是char快了,但如果是char(10)和varchar(10),充實度只有30%的情況下,理論上就應該是varchar快了。因為varchar需要額外空間存放塊長度,所以只要length(1-fillfactor)大於這個存放空間(好像是2字節),那麽它就會比相同長度的char快了。

13、nvarchar比varchar要慢上壹些,而且對於非unicode字符它會占用雙倍的空間,那麽這麽壹種類型推出來是為什麽呢?對,就是為了國際化,對於unicode類型的數據,排序規則對它們是不起作用的,而非unicode字符在處理不同語言的數據時,必須指定排序規則才能正常工作,所以n類型就這麽壹點好處。

三、名詞總結

1、如果數據量非常大,又能100%確定長度且保存只是ansi字符,那麽char

2、能確定長度又不壹定是ansi字符或者,那麽用nchar;

3、不確定長度,要查詢且希望利用索引的話,用nvarchar類型吧,將它們設到400;

4、不查詢的話沒什麽好說的,用nvarchar(4000)

5、性格豪爽的可以只用3和4,偶爾用用1,畢竟這是壹種額外說明,等於告訴別人說,我壹定需要長度為X位的數據

(這些字符型在網上都能搜索到的,搜搜看那,給妳幾個網址:

/myBlogDetail.htx&id=1619242&userid=40517719&pri=&n=0

/sql/sql_syntax.asp

  • 上一篇:求教!!!! 船運用語 CIF, FOB, CNF, LCL 等等.........
  • 下一篇:手機刷機變磚頭是什麽意思?
  • copyright 2024編程學習大全網