SQL中注意数据类型对性能的影响

在数据存储的时候有时我们不太注意字符编码对性能影响,但小问题往往造成很大的影响。在数据量小的时候感觉不出来,一旦上到百万级以上的时候就非常明显了

 

看下面两个SQL语句

---SQL1
SELECT * FROM TB1 WHERE F_NAME LIKE '名称%'

---SQL2
SELECT * FROM TB1 WHERE F_NAME LIKE N'名称%'

有什么不一样呢? 检索条件有个“N”。没错,就是这个N可能会对字符进行转码,严重时造成100倍的影响不止。

情况一、 当列F_NAME数据类型是varchar时,sql2会把表中数据编码转成Unicode再进行比较;

情况二、 当列F_NAME数据类型是nvarchar时,sql1会把当前字符转为Unicode后再比较

第一种情况对性能影响最大,所以我们在使用数据类型的时候可以做个简单规范。当只有英文时使用varchar类型,其他情况都用nvarchar类型,当然,写SQL语句时也要有所区分,否则日文,韩文什么的保存不进去了。

 

posted @ 2013-10-24 10:51  卒子  阅读(593)  评论(0编辑  收藏  举报