其实这两个类型最大的研究点就是在索引上的区别。现将我在使用SQL Server2008时的一个发现写下。(注:本讨论未建立任何全文索引)
通常我们认为 like '%服装%' 这样的查询是无法利用索引的,基本就是主键扫描。
但是当我们为某个“定长字符型”字段建立 “非聚集” “唯一” 索引时发现,如果我们的查询结果只有一条的话便会利用这个索引。如果结果超过一条或者使用“可变长字符型”字段建立的索引则不会使用索引。
另外,值得一提的是如果我们使用 and 连接条件进行筛选,如果结果仍为一条那么仍可以使用该索引。
例如:select * from movie where mname like ‘%午夜%’ and '%铃%' 。结果返回一条记录的话建立在mname(char或nchar类型)的非聚集唯一索引是有效的。呵呵,不禁有人笑说模糊匹配就是为了找一匹内容的啊,可是有时候我们实际上知道某个东西的名字但是又无法很准确完全地表达,该索引边可派上用场。不过,高性能数据库检索靠这些小手段还远远不够,在此仅是做了一个细节的探讨罢了。
这也可能是nchar相对nvarchar来说比较有实际意义的一种性能提升吧。
至于为什么会有这样的区别,笔者非常希望哪位高手路过时能够赐教。
图片看不清楚?请点击这里查看原图(大图)。
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!