其實這兩個類型最大的研究點就是在索引上的區別。現將我在使用SQL Server2008時的一個發現寫下 。(注:本討論未建立任何全文索引)
通常我們認為 like '%服裝%' 這樣的查詢是無法利用索引的,基本就是主鍵掃描。
但是當我們為某個“定長字符型”字段建立 “非聚集” “唯一” 索引時發現,如果我們的查詢結果只有一條的話便會利用這個索引。如果結果超過一條或者使用“ 可變長字符型”字段建立的索引則不會使用索引。
另外,值得一提的是如果我們使用 and 連接條件進行篩選,如果結果仍為一條那麼仍可以使用該索引 。
例如:select * from movie where mname like ‘%午夜%’ and '%鈴%' 。結果返回一條 記錄的話建立在mname(char或nchar類型)的非聚集唯一索引是有效的。呵呵,不禁有人笑說模糊匹配就 是為了找一匹內容的啊,可是有時候我們實際上知道某個東西的名字但是又無法很准確完全地表達,該索 引邊可派上用場。不過,高性能數據庫檢索靠這些小手段還遠遠不夠,在此僅是做了一個細節的探討罷了 。
這也可能是nchar相對nvarchar來說比較有實際意義的一種性能提升吧。
至於為什麼會有這樣的區別,筆者非常希望哪位高手路過時能夠賜教。